请问大佬60分的原因

P1307 [NOIP2011 普及组] 数字反转

四书五经 @ 2017-07-16 21:00:37

#include<iostream>
#include<string>
using namespace std;
string a;
int flag=0,k,f;
void swap(char &x,char &y)
{
    int tem;
    tem=x;
    x=y;
    y=tem;
}
int main()
{
    cin>>a;
    if(a[0]=='-') {flag=1;}
    k=a.size();
    if((k%2==0&&!flag)||(!(k%2)&&flag))
        f=1;
        else
        f=0;
    for(int i=0;(f?(i<(flag?(k-1)/2:(k/2))):(i<=(flag?(k-1)/2:(k/2))));i++)
    {
        if(a[i]=='-') {flag=1;continue;}
        if(a[i]!='-')
        {
            swap(a[i],a[flag?k-i:k-i-1]);
        }
    }
    for(int i=(flag?1:0);i<k;)
    {
        if(a[i]=='0')
        {
             a.erase(i,1);        
        }
        else
        if(a[i]<='9'&&a[i]>='1') 
            {break;}
    }
    cout<<a;
    return 0;
}

by 曲潇澜 @ 2017-07-18 09:22:15

你这个太复杂了啊,其实并不用那么麻烦的


by 曲潇澜 @ 2017-07-18 09:26:55

#include<iostream>
#include<string>
using namespace std;
char x[110];
int l;
int main()
{
    cin>>x;
    l=strlen(x);
    if(x[0]=='-') cout<<'-';
    for(int i=l-1;i>0;i--)
    {
        if(x[i]=='0')
            l--;
        else
            break;
    }
    if(x[0]=='-')
        for(int i=l-1;i>1;i--) cout<<x[i];
    else
        for(int i=l-1;i>0;i--) cout<<x[i];
    return 0;
}

by 曲潇澜 @ 2017-07-18 09:28:20

先打负号,然后把结尾多余的0去掉,最后再反向打印数字


by Legends丶Devil @ 2017-07-19 19:32:15

666


|