0分求助!明明在自己的devc++上完全没问题

P1307 [NOIP2011 普及组] 数字反转

FiammettaX @ 2023-09-16 15:00:05

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int a;
    bool fu=false;
    cin>>a;
    while(a%10==0)
    {
        a/=10;
    }
    if(a<0)
    {
        a=-a;
        fu=true;
    }
    string strTest=to_string(a);    //转成字符串
    if(fu)
    {
        cout<<"-";
    }
    for(int i=strTest.size();i>=0;i--)//从字符串尾部开始输出
    {
        cout<<strTest[i];
    }

}

在自己的dev c++上测试都是成功的,但是交上去就是一分没有,测试发现输入的数据在十位数以上才会出错,但是题目的数据范围在十位数以内呀,求大佬解惑!!!


by zhengenzhe @ 2023-09-16 15:27:14

开long long?


by __xux__ @ 2023-09-16 15:28:31

不开long long见祖宗


by FiammettaX @ 2023-09-17 14:06:15

@cool_xu @zhengenzhe 呜呜呜a的类型改成long long了,确实大于十位数的数也能成功反转了,但还是零分QAQ


by zhengenzhe @ 2023-09-17 14:48:21

第一开个long long 首先最后一个循环改成 for(int i=strTest.size()-1;i>=0;i--){ cout<<strTest[i]-'0'; } 在在输入后特判一下a==0 在输入a后 if(a==0){ cout<<0; return 0; } 就可以了


by FiammettaX @ 2023-09-17 16:29:39

@zhengenzhe 过了!感谢大佬!!!输出居然必须要转成整数类型,原来洛谷还能检测输出类型的吗,我还以为输出和示例的输出看起来一样就行了


|