1、描述
某种序列
数列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
OJ:http://acm.nyist.net/JudgeOnl...
2、问题
测试数据可以通过,提交显示wrong answer
#include <iostream>
#include <cstring>
#define maxn 1005
using namespace std;
int a[maxn],b[maxn],c[maxn],sum[maxn];
void init(int x,int a[maxn]){
int i=maxn-1;
while(x){
a[i--]=x%10;
x/=10;
}
}
int main(){
int ta,tb,tc;
while(cin>>ta>>tb>>tc){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
init(ta,a);init(tb,b);init(tc,c);
for(int i=3;i<100;i++){
memset(sum,0,sizeof(sum));
for(int j=maxn-1;j>=0;j--){
sum[j]+=(a[j]+b[j]+c[j]);
if(sum[j]>9){
sum[j-1]=sum[j]/10;
sum[j]%=10;
}
}
memcpy(a,b,sizeof(b));
memcpy(b,c,sizeof(c));
memcpy(c,sum,sizeof(sum));
}
int flag=0;
for(int i=0;i<maxn;i++){
if(sum[i]!=0){
flag=1;
}
if(flag){
cout<<sum[i];
}
}
cout<<endl;
}
return 0;
}
求教~
代码
0 0 0
为空