解题思路:大数。
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^100 for(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]<=b count++; }else if(b.compareto(fib[i]) < 0){//f[i]>b break; } } System.out.println(count); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。