#8773: 為什麼TLE


wemee (阿勇)


#include <stdio.h>

int main()
{
    unsigned int n,i,j;
    unsigned int ary[3] = {1,1,1};
    while( scanf("%d", &n)!=EOF ) {
    scanf("%d", &n);
        if(n<=3){
            printf("%d\n", 1);
            continue;
        }
        for(i=0,j=0;i<n-3;i++){
            j++;
            j %= 3;
            ary[j] = ary[0] + ary[1] + ary[2];
            ary[j] %= 10007;
        }
        printf("%d\n", ary[j]);
    }
   return 0;
}
 
第一個測資點沒問題
第二第三都TLE 
我也是用 迴圈呀
在我的電腦就算跑
n=4294967295 比題目預設的還要大
都是1秒內可以計算完呀
#8774: Re:為什麼TLE


wemee (阿勇)


我的註解沒刪乾淨 多了scanf("%d", &n);
這邊才是 在你的電腦可以直接跑的程式
 
#include <stdio.h>

int main()
{
    unsigned int n,i,j;
    unsigned int ary[3] = {1,1,1};
    while( scanf("%d", &n)!=EOF ) {
        if(n<=3){
            printf("%d\n", 1);
            continue;
        }
        for(i=0,j=0;i<n-3;i++){
            j++;
            j %= 3;
            ary[j] = ary[0] + ary[1] + ary[2];
            ary[j] %= 10007;
        }
        printf("%d\n", ary[j]);
    }
   return 0;
}
#10219: Re:為什麼TLE


tommy71213 (心上一個敢)


我的註解沒刪乾淨 多了scanf("%d", &n);
這邊才是 在你的電腦可以直接跑的程式
 
#include
 
int main()
{
    unsigned int n,i,j;
    unsigned int ary[3] = {1,1,1};
    while( scanf("%d", &n)!=EOF ) {
        if(n<=3){
            printf("%d\n", 1);
            continue;
        }
        for(i=0,j=0;i<n-3;i++){
            j++;
            j %= 3;
            ary[j] = ary[0] + ary[1] + ary[2];
            ary[j] %= 10007;
        }
        printf("%d\n", ary[j]);
    }
   return 0;
}

我覺得應該要讓a1,a2,a3每次跑都重置,不然會一直累加