2016-10-01 8 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]); 
    } 



} 
    } 

Этот код является модифицированной серией Фибоначчи. Я хочу рассчитать десятую цифру в этой последовательности. Но результат очень большой, я хочу спросить, в каком типе я должен ответить? Я использовал долгое время, но это не удалось ... пожалуйста, предложите любой другой тип ...Динамическое программирование Очень большое значение данных

+0

Я хочу спросить, как я бросил его в BigInteger ? –

ответ

1

Существует специальный тип для такого рода вычислений, который называется BigInteger. Найти больше информации here.

Edit:

Вы можете создать BigInteger из String

BigInteger bigInt = new BigInteger("24"); 

или от целого типа

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

Как я могу использовать его в своей программе, чтобы получить правильное значение? –

+1

Вместо массива 'double' используется массив' BigInteger', а вместо обычных математических операторов '+' и 'Math.pow' есть функции' BigInteger.add' и 'BigInteger.pow'. – kremerd