hdu 1316(大数——求一定范围内斐波那契数的个数)

来源:互联网 发布:db2 连接数据库 编辑:程序博客网 时间:2024/06/13 17:30

题目大意:输入a,b,求在[a,b]之间的斐波那契数的个数


解题思路:大数。

1)对于a.compareTo(b)。如果a<b,则返回值<0,为负数。如果a==b,则返回值为0,如果a>b,则返回值>0,为整数


代码如下:

package com.njupt.bigInteger;import java.math.BigInteger;import java.util.Scanner;public class HDU_1316_2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);BigInteger a,b;BigInteger fib[] = new BigInteger[501];fib[1] = new BigInteger("1");fib[2] = new BigInteger("2");//f[500]已达105位,已经大于10^100for(int i = 3 ; i <= 500 ; i++){fib[i] = fib[i-1].add(fib[i-2]);}BigInteger zero = new BigInteger("0");while(scanner.hasNextBigInteger()){a = scanner.nextBigInteger();b = scanner.nextBigInteger();if(a.compareTo(zero) == 0 && b.compareTo(zero) == 0){break;}int count = 0;for(int i = 1; i <= 500 ; ++i){if(a.compareTo(fib[i])<=0 && b.compareTo(fib[i])>=0){//a<=f[i]<=bcount++;}else if(b.compareTo(fib[i]) < 0){//f[i]>bbreak;}}System.out.println(count);}}}