某种序列
时间限制:
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 num[100][10000]; int max(int a,int b,int c){ if( a>b && a>c ) return a; if( a<b && b>c ) return b; return c; } int main(){ int a,b,c,d,e,i,j,k,x; while(scanf("%d %d %d",&a,&b,&c)!=EOF){ memset(num,0,sizeof(num)); i = j = k = 0; while( a ){ num[0][i++] = a%10; a/=10; } while( b ){ num[1][j++] = b%10; b/=10; } while(c){ num[2][k++] = c%10; c/=10; } e = max(i,j,k); for( d = 3 ; d <= 99 ; ++d ){ for( x = 0 ; x <= e ; ++x ) num[d][x] = num[d-1][x] + num[d-2][x] + num[d-3][x]; for( x = 0 ; x <= e+1 ; ++x ) if(num[d][x]>9){ num[d][x+1] += num[d][x]/10; num[d][x]%=10; } e = x; } for( ; e>0 ; --e ) if(num[99][e]) break; for( ; e >= 0 ; --e ) printf("%d",num[99][e]); printf("\n"); } return 0; }
-
输入包含多行数据