Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9874 Accepted Submission(s): 3305
5 1 2 3 4 5
1 1 2 3 5
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> #define N 1001 #define L 105 const int M=10000; int f[N][L]; void Fibo() { int i,j,len=1; memset(f,0,sizeof(f)); f[0][0]=1; f[1][0]=1; for(i=2;i<N;i++) for(j=0;j<L;j++) { f[i][j]+=f[i-1][j]+f[i-2][j]; if(f[i][j]>=M) { f[i][j+1]+=f[i][j]/M; f[i][j]%=M; } } } int main() { int i,p,n,len,flag; Fibo(); scanf("%d",&n); while(n--) { flag=0; scanf("%d",&p); for(i=L-1;i>=0;i--) if(f[p-1][i]) { printf("%d",f[p-1][i]); break; } i--; for(;i>=0;i--) printf("%04d",f[p-1][i]); puts(""); } return 0; }
原文:http://blog.csdn.net/u011721440/article/details/19995381