题目描述
Recall the definition of the Fibonacci numbers:
Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a,b].
f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n>=3)
Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a,b].
输入
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<=10
100. The numbers a and b are given with no superfluous leading zeros.
输出
For each test case output on a single line the number of Fibonacci numbers fi with a<=fi<=b.
样例输入
10 100 1234567890 9876543210 0 0
样例输出
5 4
import
java.math.BigInteger;
import
java.util.Scanner;
public
class
Main {
public
static
void
main(String[] args) {
BigInteger f[] =
new
BigInteger[
505
];
f[
1
] = BigInteger.ONE;
f[
2
] = BigInteger.valueOf(
2
);
for
(
int
i =
3
; i <
505
; ++i)
f[i] = f[i -
1
].add(f[i -
2
]);
Scanner scanner =
new
Scanner(System.in);
while
(scanner.hasNext()) {
BigInteger nBigInteger = scanner.nextBigInteger();
BigInteger mBigInteger = scanner.nextBigInteger();
if
(nBigInteger.equals(BigInteger.ZERO)
&& mBigInteger.equals(BigInteger.ZERO))
break
;
int
c =
0
;
for
(
int
i =
1
; i <
505
; ++i) {
if
(f[i].compareTo(mBigInteger) >
0
)
break
;
if
(f[i].compareTo(nBigInteger) >=
0
&& f[i].compareTo(mBigInteger) <=
0
)
++c;
}
System.out.println(c);
}
}
}