HDU 5686 斐波那契数列、Java求大数

原题:http://acm.hdu.edu.cn/showproblem.php?pid=5686

  当我们要求f[n]时,可以考虑为前n-1个1的情况有加了一个1。

  此时有两种情况:当不适用第n个1进行合并时,就有f[n-1]个序列;当使用这个1进行合并时,就有f[n-2]个序列。所以f[n] = f[n-1]+f[n-2]。

  因为这道题数会很大,所以可以用Java做大数运算。

  

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5 
 6     public static void main(String[] args) {
 7  
 8         Scanner sc=new Scanner(System.in);
 9         BigInteger f []=new BigInteger[205];
10         f[1]=new BigInteger("1");
11         f[2]=new BigInteger("2");
12         for(int i=3;i<=200;i++){
13             f[i]=f[i-2].add(f[i-1]);
14         }
15         while(sc.hasNext()){
16             int n=sc.nextInt();
17             System.out.println(f[n]);
18         }
19     }
20 }

 

posted @ 2016-05-20 19:52  Esieve  阅读(326)  评论(0编辑  收藏  举报