#6997: 編譯時是對的,為什麼會出現RE及TLE訊息?


rodwin (rodwin)

學校 : 不指定學校
編號 : 26938
來源 : [140.112.217.20]
最後登入時間 :
2015-01-26 11:01:53
d271. 11582 - Colossal Fibonacci Numbers! -- UVa11582 | From: [140.112.217.10] | 發表日期 : 2012-09-09 22:00

#include<iostream>
using namespace std;

int f(int n)
{
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else 
        return f(n-1)+f(n-2);
}

int p(int m,int n)
{
    int fac=1;
    for(;n>0;n--)
        fac=fac*m;
    return fac;
}

int main()
{
    int a,b,c,d,e;
    cin >> e;
    for(;e>0;e--)
    {
        cin >> a >> b >> c;
        cout << f(p(a,b))%c;
    }
}

 
#6998: Re:編譯時是對的,為什麼會出現RE及TLE訊息?


s111110111 (山口)

學校 : 國立臺灣師範大學
編號 : 21172
來源 : [220.137.25.144]
最後登入時間 :
2014-09-13 18:54:39
d271. 11582 - Colossal Fibonacci Numbers! -- UVa11582 | From: [111.250.70.23] | 發表日期 : 2012-09-09 22:16

#include
using namespace std;

int f(int n)
{
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else 
        return f(n-1)+f(n-2);
}

int p(int m,int n)
{
    int fac=1;
    for(;n>0;n--)
        fac=fac*m;
    return fac;
}

int main()
{
    int a,b,c,d,e;
    cin >> e;
    for(;e>0;e--)
    {
        cin >> a >> b >> c;
        cout << f(p(a,b))%c;
    }
}


問題分別出在 f() 跟 p()

RE 為 Runtime Error

此處是指 stack overflow,單獨測試 f(10000) 試試看

而 TLE 是 Time Limit Exceed

試試 p(2, 100000000),應該會超出題目給的時間限制吧 

 
#7000: Re:編譯時是對的,為什麼會出現RE及TLE訊息?


rodwin (rodwin)

學校 : 不指定學校
編號 : 26938
來源 : [140.112.217.20]
最後登入時間 :
2015-01-26 11:01:53
d271. 11582 - Colossal Fibonacci Numbers! -- UVa11582 | From: [140.112.217.10] | 發表日期 : 2012-09-10 00:41

#include
using namespace std;

int f(int n)
{
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else 
        return f(n-1)+f(n-2);
}

int p(int m,int n)
{
    int fac=1;
    for(;n>0;n--)
        fac=fac*m;
    return fac;
}

int main()
{
    int a,b,c,d,e;
    cin >> e;
    for(;e>0;e--)
    {
        cin >> a >> b >> c;
        cout << f(p(a,b))%c;
    }
}


問題分別出在 f() 跟 p()

RE 為 Runtime Error

此處是指 stack overflow,單獨測試 f(10000) 試試看

而 TLE 是 Time Limit Exceed

試試 p(2, 100000000),應該會超出題目給的時間限制吧 

不好意思   小弟還是不太清楚你的意思  
RE的部分是說不能用遞迴嘛?  因為我改成迴圈後就沒有了
TLE 的錯誤我還是解不開   如果是冪次錯誤   我即使用cmath  或是迴圈都解不開啊!

求高手說明啊!!!


 
ZeroJudge Forum