二维数组模拟大数加法就可以了,不太难,直接上代码了。
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #include<queue> #include<stack> #include<algorithm> using namespace std; int f[1002][502]; int n; void dabiao() { int i,j,k; memset(f,0,sizeof(f)); f[1][0]=1; f[2][0]=1; for(i=3; i<=1000; i++) { for(j=0; j<=499; j++) { f[i][j]=f[i-1][j]+f[i-2][j]; } for(j=0;j<=499;j++) { if(f[i][j]>=10) { f[i][j+1]++; f[i][j]-=10; } } } } int main() { int n,m,i,j,k,t;dabiao(); scanf("%d",&t); while(t--) { scanf("%d",&n); int flag=0; for(i=500;i>=0;i--) { if(flag==1||f[n][i]) { printf("%d",f[n][i]); flag=1; } } printf(" "); } }