80分,求大神解答

P1307 [NOIP2011 普及组] 数字反转

weijia31 @ 2016-02-12 11:14:45

http://paste.ubuntu.com/15021632/

我的代码中间的0和结尾的0都没问题但是是80分,求大神解答啊


by pcdzh @ 2016-02-12 15:25:17

0.00和000/9 呢?


by ALLEN @ 2016-02-12 19:49:57

weijia31

我是Pascal,先判断有没有负号,把a 变成正数,再repeat判断a/10是不是小数。不是的话除以十。这样可以把零删掉。再把a变成字符串,(输出/不输出)负号,再倒着输出。

不知道可不可以帮到你。


by ALLEN @ 2016-02-12 19:50:30

@weijia31


by 黄金面包王 @ 2016-02-22 22:19:56

有两种情况没有考虑进去:

1.输入0的情况

2.后方多个0重叠(例:435000)

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int main()
{
    char a[11];
    cin>>a;
    long len=strlen(a);
    if (a[0]=='0') {
        cout<<a[0];
    }
    int x=0;
    if (a[0]=='-') {
        cout<<"-";
        for (long i=len-1; i>0; i--) {
            if (a[i]=='0' && x==0)
                    continue;
                else
                    x=1;
            cout<<a[i];
        }
    }
    else if(a[0]!='0'){
        for (long i=len-1; i>=0; i--) {
            if (a[i]=='0' && x==0)
                continue;
            else
                x=1;
            cout<<a[i];
        }
    }
    return 0;
}

by Ansonxiu @ 2016-05-31 18:22:41

#include<stdio.h>
int main()
{
    long a,i,j;
    scanf("%ld",&a);
    if(a<0) {printf("-");a=0-a;}
    while(a/10!=0)
    {
        if(i==0&&a%10==0) a/=10 continue;
        else
        {
            i=1;
            printf("%ld",a%10);
            a/=10;
        }
    }printf("%ld",a%10);
    return 0;
}

|