藍橋杯系統中提交老是無法通過
using namespace std;
int fun(int a,int b,int x,int n)
{
int sum = a + b;
if (x == n) return sum % 10007;
n++;
fun(b, sum, x,n);
}
int main()
{
int x;int z = 1;
cin >> x;
if (x <= 2)
{
cout << z;
}
else
{
if (x > 2)
{
int n = 3;
int c = fun(1, 1, x,n);
}
}
system("pause");
return 0;
}
在n=10的時候 答案是55 輸出結果也為55 但是提交無法通過
但是下面的代碼可以 求大佬解答
using namespace std;
const int mod = 10007;
int main() {
int num, fib, one = 1, tow = 1;
cin >> num;
if (num <= 2)
{
cout << one;
return 0;
}
for (int i = 2; i < num; i++) {
fib = (one + tow) % mod;
one = tow % mod;
tow = fib % mod;
}
cout << fib << endl;
system("pause");
return 0;
}
uj5u.com熱心網友回復:
時間復雜度和空間復雜度都符合要求uj5u.com熱心網友回復:
你不打頭檔案?uj5u.com熱心網友回復:
區別就在于, 輸入的資料非常大的時候,你遞回呼叫很可能會太深,導致堆疊溢位uj5u.com熱心網友回復:
int sum = a + b;if (x == n) return sum % 10007;
你的代碼是只有當x==n 的時候 sum才取余數
fib = (one + tow) % mod;
one = tow % mod;
tow = fib % mod;
處處取余
你的代碼也有可能造成sum加法溢位,對于很大的資料的時候
這種比賽,都必須考慮數的范圍
uj5u.com熱心網友回復:
明白了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/123377.html
標籤:C++ 語言
