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<=10100. 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
import java.math.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
BigInteger a[] = new BigInteger[1000];
a[1] = BigInteger.ONE;
a[2] = BigInteger.valueOf(2);
for(int i = 3; i < 1000 ; i++)
a[i] = a[i-1].add(a[i-2]);
BigInteger n, m;
while(true){
n = in.nextBigInteger();
m = in.nextBigInteger();
if(n.compareTo(m)>0) {
System.out.println(0);
continue;
}
if(n.compareTo(BigInteger.ZERO) == 0 && m.compareTo(BigInteger.ZERO)==0)
return ;
int cnt = 0;
for(int i = 1; i < 1000; i++){
if(a[i].compareTo(n) >= 0 && a[i].compareTo(m) <= 0)
cnt++;
}
System.out.println(cnt);
}
}
}