#1数据超时! C语言求助

P1307 [NOIP2011 普及组] 数字反转

TraveltTibet @ 2023-04-20 20:45:57

 //给定一个整数 
//N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,
//即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
#include<stdio.h>
int main()
{
    char a[20]={0},b,i=0;
    int flag=1,star=0;
    scanf("%c",&b);
    while(b!= '\n')
    {
        a[i++]=b;
        scanf("%c",&b);
    }
    i--;
    if(a[0]=='0' && i==0)
    {
        printf("0");
        return 0;
    }
    while(i>=0 && flag )
    {
        if(a[i] =='0')
        {
            i--;
        }
        else 
            flag = 0;
    }
    if(a[0] == '-')
    {
        printf("%c",'-');
        star=1;
    }
    while (i>=star)
    {
        printf("%c",a[i--]);
    }
    return 0;
}

by codejiahui @ 2023-04-20 21:03:06

@TraveltTibet

#include <iostream>
using namespace std;
void f(string s)
{
    if (s[0] == '-')
    {
        cout << '-';
        bool flag = false;
        for (int i = s.length() - 1;i >= 1;i--)
        {
            if (s[i] != '0') flag = true;
            if (flag) cout << s[i];
        }
        cout << endl;
    }
    else
    {
        bool flag = false;
        for (int i = s.length() - 1;i >= 0;i--)
        {
            if (s[i] != '0') flag = true;
            if (flag) cout << s[i];
        }
        cout << endl;
    }
}
int main()
{
    string num;
    cin >> num;
    if (num == "0") cout << 0 << endl;
    else f(num);
    return 0;
}

关注一下吧
谢谢 thx
谢谢 thx
上面两行的格式不一样


by TraveltTibet @ 2023-04-20 21:08:47

@codejiahui ? 没懂


by codejiahui @ 2023-04-20 21:27:57

@TraveltTibet 直接 string 输入,然后分类讨论正负数(不过好像有点多此一举)


|