http://acm.hdu.edu.cn/showproblem.php?pid=1715
大数相加算法解决!
#include <iostream>
using namespace std;
int f[1001][2010];
int main()
{
int Pi;
int N;
cin>>N;
memset(f,0,sizeof(f));
f[1][0]=1;
f[2][0]=1;
for(int i=3;i<1001;i++)
for(int j=0;j<2010;j++){
f[i][j]+=f[i-1][j]+f[i-2][j];
if(f[i][j]>=10){
f[i][j+1]=f[i][j]/10;
f[i][j]=f[i][j]%10;
}
}
while(N--){
cin>>Pi;
int flag=0;
for(int i=1009;i>=0;i--){
if(flag==0&&f[Pi][i]!=0) flag=1;
if(flag) cout<<f[Pi][i];
}
cout<<endl;
}
return 0;
}