某种序列
时间限制:
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
来源
- 水题比赛中较不水的 上传者
-
hzyqazasdf
ac代码
#include<stdio.h> #include<string.h> char a[100][100010]; void add(char *a,char *b,char *c) { int i,j,max,len1,len2,k=0; int ans[100010]; len1=strlen(a); len2=strlen(b); i=len1-1; j=len2-1; memset(ans,0,sizeof(ans)); while(i>=0||j>=0) { if(i>=0&&j<0) { ans[k]+=a[i]-'0'; } else if(i<0&&j>=0) ans[k]+=b[j]-'0'; else ans[k]+=b[j]-'0'+a[i]-'0'; k++; i--; j--; ans[k]=ans[k-1]/10; ans[k-1]%=10; if(ans[k]) max=k; else max=k-1; } for(i=max;i>=0;i--) { c[max-i]=ans[i]+'0'; } c[max+1]='\0'; } int main() { int i; while(scanf("%s%s%s",a[0],a[1],a[2])!=EOF) { for(i=3;i<=99;i++) { add(a[i-3],a[i-2],a[i]); add(a[i],a[i-1],a[i]); } printf("%s\n",a[99]); } }
-
输入包含多行数据