远大目标

题目描述

给你 O,求出满足 |A∣<O 且 A 为整数的 A 的个数。

数据范围

Subtask 1(30 分): 0≤∣O∣≤2^10-1;

Subtask 2(60 分):0 ≤ |O| ≤ 2^{31}-1;

Subtask 3(10 分):0 ≤ |O| ≤ 2^{63}-1.


首先看到题目,我们知道 0≤|A∣;有|A∣<O,所以说我们不难得到O必须大于0,这才能使我们这道题有解,所以我们首先特判一下O的取值范围,如果O≤0;那么我们就可以直接输出0,结束程序了。

当此题有解的时候,我们可以通过数据看出规律:

a b
2 3
1145141919810 2290283839619
12345 24689

我们不难发现b=a*2-1;


我们可以直接输出

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long a;
    cin>>a;
    if(a<=0){
        cout<<"0";
        return 0;
    }
    long long b=2*a-1;
    cout<<b;
    return 0;
}

但是我们通过数据发现数据要卡long long;
所以我们可以想到字符串

#include<bits/stdc++.h>
using namespace std;
int main() {
    string a;
    cin>>a;
    if(a[0]=='0'){
        cout<<"0";
        return 0;
    }
    if(a[0]=='-'){
        cout<<"0";
        return 0;
    }
    long long b[a.size()+1];
    for(int i=0; i<a.size(); i++) {
        if(int(b[i])>=48&&int(b[i])<=57){
            b[i]=(a[i]-'0')*2;
        }
        else{
            cout<<"0";
            return 0;
        }
    }
    int vis=0;
    for(int i=a.size()-1; i>=0; i--) {
        if(vis==1) {
            b[i]=b[i]+1;
        }
        if(b[i]>=10) {
            b[i]=b[i]-10;
            vis=1;
        } else {
            vis=0;
        }
    }
    int tot=1;
    if(b[a.size()-1]!=0) {
        b[a.size()-1]=b[a.size()-1]-1;
    } else {
        while(b[a.size()-tot]==0) {
            b[a.size()-tot]=9;
            tot++;
        }
        b[a.size()-tot]=b[a.size()-tot]-1;
    }
    int nbnnb=0;
    for(int i=0; i<a.size(); i++) {
        if(nbnnb==1){
            cout<<b[i];
        }
        else{
            if(b[i]==0){
                continue;
            }
            else{
                nbnnb=1;
                cout<<b[i];
            }
        }
    }
    return 0;
}

但是字符串这个程序十分麻烦,我们就想到了unsigned long long,就这样我们就可以过了 这个字符串程序还有点问题


程序:

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long a;
    cin>>a;
    if(a<=0){
        cout<<"0";
        return 0;
    }
    unsigned long long b=2*a-1;
    cout<<b;
    return 0;
}

原文链接: https://www.cnblogs.com/wozuishuaiwozuiniu6/p/13151476.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    远大目标

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/356362

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午11:11
下一篇 2023年3月2日 上午11:11

相关推荐