题目描述
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<=10100. 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
importjava.math.BigInteger;importjava.util.Scanner;publicclassMain {publicstaticvoidmain(String[] args) {BigInteger f[] =newBigInteger[505];f[1] = BigInteger.ONE;f[2] = BigInteger.valueOf(2);for(inti =3; i <505; ++i)f[i] = f[i -1].add(f[i -2]);Scanner scanner =newScanner(System.in);while(scanner.hasNext()) {BigInteger nBigInteger = scanner.nextBigInteger();BigInteger mBigInteger = scanner.nextBigInteger();if(nBigInteger.equals(BigInteger.ZERO)&& mBigInteger.equals(BigInteger.ZERO))break;intc =0;for(inti =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);}}}
本文介绍了一个算法,用于计算给定范围内斐波那契数的数量。通过生成斐波那契数列并检查其是否在指定范围内,算法能够高效地找到答案。
426

被折叠的 条评论
为什么被折叠?



