【HDOJ】1316 How Many Fibs?

Java水了。

 1 import java.util.Scanner;
 2 import java.math.BigInteger;
 3 
 4 public class Main {
 5     public static void main(String[] args) {
 6         Scanner cin = new Scanner(System.in);
 7         BigInteger[] fibs = new BigInteger[MAXN];
 8         // init the fibs
 9         fibs[0] = BigInteger.valueOf(1);
10         fibs[1] = BigInteger.valueOf(2);
11         int n = 2;
12         while (true) {
13             fibs[n] = fibs[n-1].add(fibs[n-2]);
14             ++n;
15             if (fibs[n-1].toString().length() >= 101)
16                 break;
17         }
18         // System.out.println(n);
19         while (cin.hasNext()) {
20             BigInteger aa = cin.nextBigInteger();
21             BigInteger bb = cin.nextBigInteger();
22             if (aa.compareTo(BigInteger.ZERO)==0 && bb.compareTo(BigInteger.ZERO)==0) {
23                 break;
24             }
25             int ans = 0;
26             for (int i=0; i<n; ++i) {
27                 if (fibs[i].compareTo(aa) >= 0) {
28                     if (fibs[i].compareTo(bb) <= 0)
29                         ++ans;
30                     else
31                         break;
32                 }
33             }
34             System.out.println(ans);
35         }
36     }
37     
38     public static final int MAXN = 505;
39 }
原文地址:https://www.cnblogs.com/bombe1013/p/4081800.html