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 }