求各位大神求助!!为什么我交上去超时了??T.T~

P1307 [NOIP2011 普及组] 数字反转

Snowflake_Pink @ 2017-10-15 11:05:49

这是我的代码:

#include <iostream>
using namespace std;
int main()
{
    long t,n,s,i,j,k;
    cin >>s;
    t=s;
    while (s!=0){
        s=s/10;
        i++;
    }
    s=t;
    t=1;
    n=0;
    for (int j=1;j<=i;j++){
        for (int k=1;k<=i-j;k++){
            t=t*10;
        }
        n=s%10*t+n;
        s=s/10;
        t=1;
    }
    cout <<n;
    return 0;
}
竟然10个测试点全超时了,线下还好好的,在1秒以内。。。。

by 小哥不小心MXH @ 2017-10-16 07:19:38

你的while应该是想记下数的位数?

但是这个while有问题,你输出一下i的值会发现它的值很大(我也不知道为什么),这样的话下面两个for嵌套复杂度就会很长。

而且我本地运行没有发现一组正确的数据啊


by BiuBiu_Miku @ 2017-10-20 22:24:08

你傻啊!别用long啊!

用int啊!


by LgxTpre @ 2017-10-24 18:29:48

我的也是超时


|