某种序列
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
- 数列A满足An = An-1 + An-2 + An-3, n >= 3
编写程序,给定A0, A1 和 A2, 计算A99
- 输入
- 输入包含多行数据
每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000)
数据以EOF结束
- 输出
- 对于输入的每一行输出A99的值
- 样例输入
-
1 1 1
- 样例输出
-
69087442470169316923566147
-
#include<cstdio> #include<cstdlib> #include<cstring> using namespace std; int sum[110][110]; int main() { int a,b,c,i,j,n,k,q,p; while(scanf("%d%d%d",&a,&b,&c)==3){ memset(sum,0,sizeof(sum));i=j=0; if(a==0&&b==0&&c==0){ printf("%d\n",0);continue; } while(a){ sum[0][j++]=a%10; a=a/10; }j=0; while(b){ sum[1][j++]=b%10; b=b/10; }j=0; while(c){ sum[2][j++]=c%10; c=c/10; } for(i=3;i<=99;++i){ q=p=0; for(j=0;j<=110;++j){ p=sum[i-1][j]+sum[i-3][j]+q+sum[i-2][j]; sum[i][j]=(sum[i-1][j]+sum[i-3][j]+sum[i-2][j]+q)%10; q=p/10; } } for(i=109;i>=0;--i){ if(sum[99][i]!=0)break; } for(j=i;j>=0;--j) printf("%d",sum[99][j]); printf("\n"); } return 0; }
时间: 2024-10-17 14:52:07