题意并不难,但是注意容易出现 runtime error,先上AC
#include<iostream>
using namespace std;
int fib[5005][1100]={0};
int main()
{
fib[0][0]=0;
fib[1][0]=1;
fib[2][0]=1;
for(int i=3;i<=5001;i++)
{
for(int k=0;k<1100;k++)
{
fib[i][k]+=fib[i-1][k]+fib[i-2][k];
if(fib[i][k]>9)
{
fib[i][k+1]+=fib[i][k]/10;
fib[i][k]%=10;
}
}
}
int n;
while(cin >> n)
{
cout << "The Fibonacci number for " << n << " is ";
if(n!=0){
int end=1050;
while(!fib[n][end]) end--;
for(;end>=0;end--) cout << fib[n][end];
}
if(n==0) cout << 0;
cout << endl;
}
return 0;
}
比如说n==0时的情况,作者就忘了考虑,结果一直RE。。。
还有其他的小细节,比如k和end的取值范围。