题目

/**
* 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(); //关闭输入文件
}
}
04-28 01:05