问题 D: 某种序列
题目描述
数列A满足An = An-1 + An-2 + An-3, n >= 3
编写程序,给定A0, A1 和 A2, 计算A99
编写程序,给定A0, A1 和 A2, 计算A99
输入
输入包含多行数据
每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000)
数据以EOF结束
每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000)
数据以EOF结束
输出
对于输入的每一行输出A99的值
样例输入
1 1 1
样例输出
69087442470169316923566147
1 #include<stdio.h> 2 #include<string.h> 3 #define base 100000000 4 int a[100][100]; 5 6 void f(int i,int n) 7 { 8 a[i][1]=n; 9 } 10 11 int main() 12 { 13 int i,j,len,t1,t2,t3,temp,jw; 14 while(~scanf("%d%d%d",&t1,&t2,&t3)) 15 { 16 if(t1==0&&t2==0&&t3==0) 17 printf("0"); 18 else 19 { 20 memset(a,0,sizeof(a)); 21 f(0,t1); 22 f(1,t2); 23 f(2,t3);//转为数组存数 24 len=1; 25 26 for(i=3;i<=99;i++) 27 { 28 jw=0; 29 for(j=1;j<=len;j++) 30 { 31 temp=a[i-1][j]+a[i-2][j]+a[i-3][j]+jw; 32 a[i][j]=temp%base; 33 jw=temp/base; 34 if(j == len && jw != 0) 35 len++; 36 } 37 } 38 i=len; 39 printf("%d",a[99][i--]); 40 for(;i>=1;i--) 41 printf("%08d",a[99][i]); 42 } 43 printf("\n"); 44 } 45 return 0; 46 }