某种序列
时间限制:
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<stdio.h> #include<string.h> int a[40],b[40],c[40]; int add(int a[],int b[],int c[]) { for(int i=0;i<40;i++) { a[i]=a[i]+b[i]+c[i]; a[i+1]+=a[i]/10; a[i]=a[i]%10; } } int main() { int A0,A1,A2; int i; while(scanf("%d%d%d",&A0,&A1,&A2)!=EOF) { i=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); while(A0||A1||A2) { a[i]=A0%10; A0=A0/10; b[i]=A1%10; A1=A1/10; c[i]=A2%10; A2=A2/10; ++i; } for(i=3;i<99;i+=3) { add(a,b,c); add(b,a,c); add(c,a,b); } add(a,b,c); i=39; while(i>0&&a[i]==0) --i; if(i==0) { printf("%d\n",a[0]); continue; } for(;i>=0;--i) printf("%d",a[i]); printf("\n"); } return 0; }
-
输入包含多行数据