大数问题。。。。因为每次计算都会用到前两次的数值,所以可打表保存
#include<stdio.h>
#include<string.h>
int A[1010][510];
int main(){
int i,j,n,m,c;
memset(A,0,sizeof(A));
A[1][0]=1;
A[2][0]=1;
for(i=3;i<=1000;i++){
c=0;
for(j=0;j<=500;j++){
A[i][j]=A[i-1][j]+A[i-2][j]+c;
c=A[i][j]/10;
A[i][j]%=10;
}
}
scanf("%d",&n);
while(n--){
scanf("%d",&m);
for(i=500;i>=0;i--) if(A[m][i]){
j=i;
break;
}
for(i=j;i>=0;i--) printf("%d",A[m][i]);
printf("\n");
}
return 0;
}