HDU1316How Many Fibs?
斐波那契数问题(注意大数之间的比较):

题意:输入n组测试样例,每组两个数字,输出这两个数字之间的斐波那契数的个数。
总结:

  • 斐波那契数列问题需要开大数数组,数组大小可以依据:1-10^100之间的斐波那契数有479个。
  • 求解大数斐波那契个数的思路就是:把大数数组填充满斐波那契数,再用数组角标去和限定边界作比较。
import java.util.Scanner;
import java.math.BigInteger;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		BigInteger[] f = new BigInteger[500];//需要开大数数组
		f[1] = new BigInteger("1");
		f[2] = new BigInteger("2");
		for (int i = 3; i < f.length; i++)
			f[i] = f[i - 1].add(f[i - 2]);// 将斐波那契数存入数组
		while (in.hasNext()) {
			int ans = 0;
			BigInteger a = in.nextBigInteger();
			BigInteger b = in.nextBigInteger();
			if (a.compareTo(BigInteger.ZERO) == 0
					&& b.compareTo(BigInteger.ZERO) == 0)
				break;
			for (int i = 1; i < f.length; i++) {// 搜索
				if (f[i].compareTo(a) >= 0 && f[i].compareTo(b) <= 0)
					ans++;
				if (f[i].compareTo(b) == 1)
					break;
			}
			System.out.println(ans);
			ans = 0;
		}
	}
}