您的位置:首页 > 其它

HDU1316 How Many Fibs? 【大数】

2014-04-05 09:06 387 查看
原题链接

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

public class Main{
static final int max = 500;
static BigInteger[] arr = new BigInteger[max];
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigInteger a, b;
int i, l, r;
arr[1] = BigInteger.ONE; arr[2] = BigInteger.valueOf(2);
for(i = 3; i != max; ++i)
arr[i] = arr[i - 1].add(arr[i - 2]);
while(true){
a = cin.nextBigInteger();
b = cin.nextBigInteger();
if(a.compareTo(BigInteger.ZERO) == 0
&& b.compareTo(BigInteger.ZERO) == 0) break;
l = binarySearch1(a);
r = binarySearch2(b);
System.out.println(r - l);
}
}

public static int binarySearch1(BigInteger n){
int i;
for(i = 1; i < max; ++i)
if(arr[i].compareTo(n) >= 0) return i;
return 0;
}

public static int binarySearch2(BigInteger n){
int i;
for(i = 1; i < max; ++i)
if(arr[i].compareTo(n) > 0) return i;
return 0;
}
}

104779752014-04-05 09:09:45Accepted1316187MS5640K971 BJava长木
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HDU1316 How Many Fib