题意:在L-R的范围内有多少斐波那契数。
思路:大数加法,然后挨个找即可。
AC代码如下:
import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
public static void main(String [] args)
{
Scanner scan=new Scanner(System.in);
BigInteger f[]=new BigInteger[1010],L,R,ret;
int i,j,k;
f[0]=new BigInteger("0");
f[1]=new BigInteger("1");
f[2]=new BigInteger("2");
for(i=3;i<=1000;i++)
f[i]=f[i-2].add(f[i-1]);
String s;//=f[1000].toString();
//System.out.println(s.length());
while(true)
{
L=scan.nextBigInteger();
R=scan.nextBigInteger();
if(L.equals(f[0]) && R.equals(f[0]))
break;
for(i=1;i<=1000;i++)
{
ret=f[i].subtract(L);
s=ret.toString();
if(s.charAt(0)!='-')
break;
}
for(j=i;j<=1000;j++)
{
ret=R.subtract(f[j]);
s=ret.toString();
if(s.charAt(0)=='-')
break;
}
//System.out.println(i+" "+j);
System.out.println(j-i);
}
}
}