描述
数列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 <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[1000],b[1000],c[1000];
while (cin>>a>>b>>c)
{
int d[1000],e[1000],f[1000];
int sum[1000];
int n1,n2,n3;
int i,j,k;
memset(d,0,sizeof(d));
memset(e,0,sizeof(e));
memset(f,0,sizeof(f));
n1 = strlen(a);
n2 = strlen (b);
n3 = strlen (c);
for (i=0,j=n1-1;i<n1;i++,j--)
{
d[j] = a[i]-'0';
}
for (i=0,j=n2-1;i<n2;i++,j--)
{
e[j] = b[i]-'0';
}
for (i=0,j=n3-1;i<n3;i++,j--)
{
f[j] = c[i]-'0';
}
for (j=0;j<97;j++)
{
int next = 0;
for (i=0;i<1000;i++)
{
sum[i]=d[i]+e[i]+f[i]+next;
next = sum[i]/10;
sum[i] = sum[i]%10;
}
for (i=0;i<1000;i++)
{
d[i] = e[i];
e[i] = f[i];
f[i] = sum[i];
}
}
int z=0;
if (n1==1&&n2==1&&n3==1&&a[0]=='0'&&b[0]=='0'&&c[0]=='0')
cout<<"0";
for (i=1000-1;i>=0;i--)
{
if (sum[i]==0&&z==0)
{
continue;
}
else
{
cout<<sum[i];
z=1;
}
}
cout<<endl;
}
return 0;
}