大数斐波那契数列
跟hdu1250相似,不够更难做一点
#include<stdio.h> #include<string.h> #define N 103 #define M 800 #define base 100000000 //进制 int a[N][M]; int main() { int i,j,n,x,y,z; while(scanf("%d%d%d",&x,&y,&z)!=EOF) { if(x==0 && y==0 && z==0)//变态测试数据0 0 0 { printf("0\n"); continue; } memset(a,0,sizeof(a));//初始化 a[1][1]=x; a[2][1]=y; a[3][1]=z; for(i=4;i<N;++i) for(j=1;j+1<M;++j) //j+1<M 主要是a[i][j+1]这里不能越界,也可以写j<M, { //没太大影响,因为测试数据运行没那么大,无法进位 a[i][j]+=a[i-1][j]+a[i-2][j]+a[i-3][j]; if(a[i][j]>=base) { a[i][j+1]+=a[i][j]/base; a[i][j]%=base; } } n=100;//不能是99,跟存储有关 for(i=M-1;i>=1;--i) if(a[n][i]!=0) { printf("%d",a[n][i]); i--; break; } while(i>=1) { printf("%08d",a[n][i]); i--; } printf("\n"); } return 0; }