1. 程式人生 > >Java大數相加(多個大數相加)-hdu1250

Java大數相加(多個大數相加)-hdu1250

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1250

題目描述:

題目大意是:已知一個Hat's Fibonacci序列,該序列滿足F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4);

此題用java的BigInteger處理很方便,但是因為我在處理F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)時,出現表達錯誤而編譯器未檢驗出來,導致WA了很多次。表達上式用f[i]=(f[i-1]).add(f[i-2]).add(f[i-3]).add(f[i-4]);值得注意的是第一個F[i-1]應該用一個單獨的括號括起來。

程式碼實現:

 1 //package practice;
 2 
 3 import java.math.BigInteger;
 4 import java.util.Scanner;
 5 
 6 public class Main{
 7     public static void main(String[] args) {
 8         Scanner scanner=new Scanner(System.in);
 9         while(scanner.hasNext()) {
10             int n=scanner.nextInt();
11 BigInteger[] f=new BigInteger[100005]; 12 f[1]=f[2]=f[3]=f[4]=BigInteger.ONE; 13 for(int i=5;i<=n;i++) { 14 f[i]=(f[i-1]).add(f[i-2]).add(f[i-3]).add(f[i-4]);//第一個f[i-1]要加上括號,不然會WA 15 } 16 System.out.println(f[n]); 17 }
18 } 19 }