HDU 1316 How Many Fibs?

Problem Description
Recall the definition of the Fibonacci numbers: 
f1 := 1 
f2 := 2 
fn := fn-1 + fn-2 (n >= 3) 

Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a, b]. 

 

Input
The input contains several test cases. Each test case consists of two non-negative integer numbers a and b. Input is terminated by a = b = 0. Otherwise, a <= b <= 10^100. The numbers a and b are given with no superfluous leading zeros.
 

Output
For each test case output on a single line the number of Fibonacci numbers fi with a <= fi <= b. 
 

Sample Input
 
  
10 100
1234567890 9876543210
0 0
 

Sample Output
 
  
5
4


分析:求a和b之间的斐波拉契数的个数。

import java.math.BigInteger;
import java.util.Scanner;
public class Main {  
    public static void main(String[] args)  {  
        Scanner in = new Scanner(System.in);  
        BigInteger []s = new BigInteger[1000];
        s[1] = BigInteger.valueOf(1);
        s[2] = BigInteger.valueOf(2);
        for(int i = 3; i < 1000; i++) {
        	s[i] = s[i-1].add(s[i-2]);
        }
        while(in.hasNextBigInteger()) {
        	BigInteger a = in.nextBigInteger();
        	BigInteger b = in.nextBigInteger();
        	if(a.compareTo(BigInteger.ZERO)==0&&b.compareTo(BigInteger.ZERO)==0) {
        		break;
        	}
        	int cnt = 0;
        	for(int i = 1; i < 1000; i++) {
        		 if(s[i].compareTo(a)>=0 && s[i].compareTo(b)<=0) {
        			 cnt++;
        		 }
        	}
        	System.out.println(cnt); 	
        }
        in.close(); 
    }  
}  

猜你喜欢

转载自blog.csdn.net/adusts/article/details/80658394