nyoj-114 某种序列

来源:互联网 发布:数据预测模型有哪些 编辑:程序博客网 时间:2024/05/22 00:12

描述

数列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;}