Problem B: How many Fibs?
Recall the definition of the Fibonacci numbers:
f 1 := 1
f 2 := 2
f n := f n-1 + f n-2 (n>=3)
Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a,b].
Input Specification
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 Specification
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
直接利用java大数可以水过
import java.util.*;
import java.math.*;
public class Main {
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
BigInteger f[]=new BigInteger[1000];
BigInteger a,b;
int i,ans;
f[1]=BigInteger.ONE;
f[2]=BigInteger.valueOf(2);
for(i=3;i<1000;i++)
f[i]=f[i-1].add(f[i-2]);
while(true)
{
a=cin.nextBigInteger();
b=cin.nextBigInteger();
if(a.compareTo(b)>0)
{
System.out.println(0);
continue;
}
if(a.compareTo(BigInteger.ZERO)==0&&b.compareTo(BigInteger.ZERO)==0)
break;
ans=0;
for(i=1;i<1000;i++)
{
if(f[i].compareTo(a)>=0&&f[i].compareTo(b)<=0)
ans=ans+1;
}
System.out.println(ans);
}
}
}