您的位置:首页 > 其它

HDOJ 1316 How Many Fibs?

2011-08-20 20:56 295 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1316

计算给定的区间有多少个FIB数列个数

直接用暴力,但暴力也是有技巧的,直接参考代码中有注释

源代码:

import java.math.BigInteger;
import java.util.Scanner;

//125MS 3668K    AC
public class Main{

static BigInteger[] f=new BigInteger[1000];//1000就够了
public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);

int count;

f[1]=BigInteger.valueOf(1);
f[2]=BigInteger.valueOf(2);

for (int i = 3; i <500 ; i++) {
f[i]=f[i-1].add(f[i-2]);
}

while (scanner.hasNext()) {
count=0;
BigInteger a,b;
a=scanner.nextBigInteger();
b=scanner.nextBigInteger();

if (BigInteger.ZERO.equals(a)&& BigInteger.ZERO.equals(b)) {
break;
}

for (int i = 1; i < 500; i++) {
//因为Fib数列是递增的所以只要判断比小区间大于或者等于 比大区间的小于或者等于就行
if (a.compareTo(f[i])<=0 && b.compareTo(f[i])>=0 ) {
count++;
}
}

System.out.println(count);

}

}

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  import string class