为什么9000000000输出本来就是9还通不过呢?

P1307 [NOIP2011 普及组] 数字反转

RichieZhang2021 @ 2021-12-05 02:58:02

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        string a,b;
        int zer=0;
        cin>>a;
        if(a.length()==1&&a[0]=='0')
            cout<<0;//为单数入0输出0
        else{
        for(long long c=0;c<a.length();c++)
                b[a.length()-c-1]=a[c];//直接倒叙
        if(a[0]=='-'){//负数分开
                cout<<'-';
        for(long long d=0;d<a.length()-1;d++)
        if(b[d]!='0'||zer==1){//排除最高值为0
            zer=1;
            cout<<b[d];
        }
    }
    else
        for(long long d=0;d<=a.length();d++){
            if(b[d]!='0'||zer==1){//排除最高值为0
                zer=1;
                cout<<b[d];
            }
        }
        return 0;
    }
    }

求助大佬


by unputdownable @ 2021-12-05 08:21:15

@RichieZhang2021 正数那一块为什么是 d<=a.length()?


by _QrSn_ @ 2021-12-05 09:01:43

@RichieZhang2021

if(a.length()==1&&a[0]=='0')
            cout<<0;//为单数入0输出0

这里其实可以直接输出并且return的,a[0]=='0'可以改成a[0]!='-'

不过这貌似不是主要错因


by RichieZhang2021 @ 2021-12-05 16:55:05

@unputdownable AC了,谢谢大佬


|