HDU1316--有多少斐波那契数 How Many Fibs?

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;
		}
	}
}
全部评论

相关推荐

大厂的边缘业务去了也没啥用,也得不到任何成长,尤其是审核、中台这种价值产出不清楚的,别被大厂光环蒙蔽了双眼,如果你找实习工作,优先找"离钱近的业务",钱多的业务福利年终奖啥的都不会差的
陈100:呵呵。 你在大厂工作2年,后面准备好,可以随便跳很多公司。 去小厂,现在拿到所谓多的钱,有啥用啊,未来没有了。 而且应届生,工作没几年的,也不是赚钱的时间。
点赞 评论 收藏
分享
06-12 16:50
已编辑
小米_软件开发(准入职员工)
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
震撼沃玛一整年:查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务