题目:输出第n个Fib。
分析:大整数、模拟。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int F[5005][305];
int main()
{
//打表
F[0][0] = 0;F[1][0] = 1;
for ( int i = 2 ; i <= 5000 ; ++ i ) {
for ( int j = 0 ; j <= 301 ; ++ j )
F[i][j] = F[i-1][j]+F[i-2][j];
for ( int j = 0 ; j <= 301 ; ++ j ) {
F[i][j+1] += F[i][j]/10000;
F[i][j+0] %= 10000;
}
}
int n;
while ( scanf("%d",&n) != EOF ) {
printf("The Fibonacci number for %d is ",n);
int end = 300;
while ( end >= 1 && !F[n][end] ) end --;
printf("%d",F[n][end --]);
while ( end >= 0 ) printf("%04d",F[n][end --]);
printf("\n");
}
return 0;
}