2016-10-01 18 views
0
import java.io.*; 
import java.util.*; 

public class Solution { 

public static void main(String[] args) { 
    /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ 

    Scanner s= new Scanner(System.in); 
    int t1=s.nextInt(); 
    int t2= s.nextInt(); 
    int n= s.nextInt(); 
    double arr[]= new double[20]; 
    for(int i=0;i<20;i++){ 
    arr[i]=-1; 

    } 
    arr[1]= t1; 
    arr[2]=t2; 

    if(arr[n]!=-1){ 
     System.out.println((long)arr[n]); 
    } 

    else{ 
     for(int i=3;i<=n;i++){ 
      arr[i]= arr[i-2] + Math.pow(arr[i-1],2); 
     } 
     System.out.println((long)arr[n]); 
    } 



} 
    } 

このコードは変更されたフィボナッチシリーズです。私はこの順序で10番目の桁を計算したいと思います。しかし結果は非常に大きいです。私はどのタイプの答えを出すべきか質問したいと思います。私は長い間使ってきましたが、失敗しました...他のタイプをお勧めします...ダイナミックプログラミング非常に大きなデータ値

+0

からBigIntegerを作成することができます? –

答えて

1

BigIntegerと呼ばれるこの種の計算には特別なタイプがあります。より多くの情報を見つけるhere

編集:

あなたは、私はBigIntegerのにキャストんかお願いしたいと思いますString

BigInteger bigInt = new BigInteger("24"); 

または整数型から

BigInteger fromInt = BigInteger.valueOf(24); 
+0

私は正しい値を得るために私のプログラムでそれをどう使っていますか? –

+1

'double'の配列の代わりに' BigInteger'の配列を使い、通常の演算子 '+'と 'Math.pow'の代わりに' BigInteger.add'と 'BigInteger.pow'という関数があります。 – kremerd

関連する問題