某种序列
时间限制:
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<cstring> #include<iostream> #include<algorithm> #include<math.h> #include<stdlib.h> #include<stack> #include<vector> #include<string.h> #include<map> #define INF 0x3f3f3f3f3f using namespace std; int main() { int a0,a1,a2,a[101][1001]; while(~scanf("%d%d%d",&a0,&a1,&a2)) { if(a0==0&&a1==0&&a2==0)//一定要进行特判 { printf("0\n"); } else { memset(a,0,sizeof(a)); a[0][1]=a0; a[1][1]=a1; a[2][1]=a2; int len=1,ans,flag,m; for(int i=3; i<=99; i++) { m=0; for(int j=1; j<=len; j++) { ans=a[i-1][j]+a[i-2][j]+a[i-3][j]+m;//三个数相加 a[i][j]=ans%10; m=ans/10; if(j==len&&m!=0) { len++; } } } for(int i=len; i>=1; i--) { printf("%d",a[99][i]); } printf("\n"); } } }
-
输入包含多行数据