本题是找在a和b之间有多少斐波那契书
大数题 果断用java 二分搜索
java 大数真是好用
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
BigInteger a[]=new BigInteger[10500];
a[1]=BigInteger.valueOf(1);
a[2]=BigInteger.valueOf(2);
for(int i=3;i<10500; i++)
a[i]=a[i-1].add(a[i-2]);
BigInteger n,b;
while(cin.hasNextBigInteger()){
n=cin.nextBigInteger();
b=cin.nextBigInteger();
if(n.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO))
break;
int sum1=0,sum2=0;
int low,high,mid;
low=1;high=10500;
while(low<=high){
mid=(low+high)/2;
if(a[mid].compareTo(n)==0){
sum1=mid-1;
break;
}
else if(a[mid].compareTo(n)<0)
low=mid+1;
else high=mid-1;
}
if(sum1==0&&!n.equals(BigInteger.valueOf(1)))sum1=high;
low=1;high=10500;
while(low<=high){
mid=(low+high)/2;
if(a[mid].compareTo(b)==0){
sum2=mid;
break;
}
else if(a[mid].compareTo(b)<0)
low=mid+1;
else high=mid-1;
}
if(sum2==0&&!b.equals(BigInteger.valueOf(1)))sum2=high;
System.out.println(sum2-sum1);
}
}
}