/**
* compareTo:根据该数值是小于、等于、或大于 val 返回 -1、0 或 1;
public int
compareTo(BigInteger val)
将此 BigInteger 与指定的 BigInteger
进行比较。
对于针对六个布尔比较运算符 (<, ==, >, >=, !=,
<=)
中的每一个运算符的各个方法,优先提供此方法。
执行这些比较的建议语句是:(x.compareTo(y) <op>
0),
其中 <op> 是六个比较运算符之一。
*/
/**
* and:等同于c++的&&,且;
*/
import java.io.*; import java.util.*; import java.math.*; public class Main { /** * @xqq */ public int an(BigInteger a, BigInteger b, BigInteger sa, BigInteger sb) { int ans = 0; if(a.compareTo(sa) >= 0 && a.compareTo(sb) <= 0) { ans++; } if(b.compareTo(sa) >= 0 && b.compareTo(sb) <= 0) { ans++; } for(;;) { BigInteger c = a.add(b); a = b; b = c; if(b.compareTo(sa) >= 0 && b.compareTo(sb) <= 0) { ans++; } if(b.compareTo(sb) > 0) { return ans; } } } public static void main(String[] args) throws Exception { // 定义并打开输入文件 Scanner cin = new Scanner(System.in); Main e = new Main(); BigInteger a = BigInteger.valueOf(1); BigInteger b = BigInteger.valueOf(2); BigInteger sa; BigInteger sb; BigInteger zero = BigInteger.ZERO; while(cin.hasNext()) { sa = cin.nextBigInteger(); sb = cin.nextBigInteger(); if(sa.compareTo(zero) == 0 && sb.compareTo(zero) == 0) { break; } System.out.println(e.an(a, b, sa, sb)); } cin.close(); //关闭输入文件 } }