あるシーケンス



説明
数列AはA n=An-1+An-2+An-3を満たす。n>=3  プログラムを作成して、A 0、A 1、A 2を指定して、A 99を計算します。
入力には複数行のデータが含まれています。1行あたりのデータは3つの整数A 0、A 1、A 2(0<=A 0、A 2、=100000 0000)のデータを含んでいます。EOFで終了します。
出力
入力する行ごとにA 99の値を出力します。
サンプル入力
1 1 1
サンプル出力
69087442470169316923566147
         問題の意味は言わないで、できるだけ当たって、これは私がjava水を使って私達ojで最後の大きな数の問題です。
     javaコード:
import java.math.*;
import java.util.*;
public class Main{
	  public static void main(String[]args){
		   Scanner in=new Scanner(System.in);
		   BigInteger a=null;
		   BigInteger b=null;
		   BigInteger c=null;
		   BigInteger d=null;
		    while(in.hasNextBigInteger())
		    {     a=in.nextBigInteger();
		          b=in.nextBigInteger();
		          c=in.nextBigInteger();
		          for(int i=3;i<=99;i++)
		          {    d=a.add(b).add(c);
		                a=b;
		                b=c;
		                c=d;
		           }
		          System.out.println(d);
		    	}
		    }
	  }
c++コード:
 
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
int a[50],b[50],c[50],d[50];
int main()
{  string s,s1,s2;
   while(cin>>s>>s1>>s2)
   {   memset(a,0,sizeof(a));
       memset(b,0,sizeof(b));
	   memset(c,0,sizeof(c));
	   memset(d,0,sizeof(d));
	   for(int i=0,j=s.size()-1;j>=0;++i,--j)
            a[i]=s[j]-'0';
        for(int i=0,j=s1.size()-1;j>=0;++i,--j)
            b[i]=s1[j]-'0';
        for(int i=0,j=s2.size()-1;j>=0;++i,--j)
            c[i]=s2[j]-'0';
		  for(int i=0;i<=96;++i)
		  {  int k=0;
		     for(int j=0;j<50;++j)
			 {  d[j]=a[j]+b[j]+c[j]+k;
			     k=d[j]/10;
				 d[j]%=10;
			 }
			 for(int j=0;j<50;++j)
			 {  a[j]=b[j];
			    b[j]=c[j];
				c[j]=d[j];
			 }
		  }
		  int  flag=0,t;
           for(int i=49;i>=0;--i)
			   if(d[i]) {flag=1;t=i;break;}
			   if(!flag) cout<<"0"<<endl;  
			   else{
				     for(int i=t;i>=0;--i)
				       cout<<d[i];
			           cout<<endl;
			      }
       }return 0;
}