uva 10183 How Many Fibs
2012-06-09 16:49
337 查看
How Many Fibs
这个题目开始的看的时候以为需要什么特别的公式来求解某个区间的值的个数。但是发现根本无法解方程,看了别人的思想,由于在10^100内出现的fib数不是很多大概有600个,然后直接用大数计算出来这些值,然后再去比较判断。这样肯定首选java写了,大数类不是一般的好用。。。。。在杭电上交这个题目一直没过,从网上搜的代码叫过去也没过,可能是数据的原因。在uva上一次就过,代码如下:
这个题目开始的看的时候以为需要什么特别的公式来求解某个区间的值的个数。但是发现根本无法解方程,看了别人的思想,由于在10^100内出现的fib数不是很多大概有600个,然后直接用大数计算出来这些值,然后再去比较判断。这样肯定首选java写了,大数类不是一般的好用。。。。。在杭电上交这个题目一直没过,从网上搜的代码叫过去也没过,可能是数据的原因。在uva上一次就过,代码如下:
import java.io.* ; import java.util.* ; import java.math.* ; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in) ; BigInteger[] f = new BigInteger[1000] ; f[1] = BigInteger.valueOf(1) ; f[2] = BigInteger.valueOf(2) ; int i ; for(i = 3 ; i <= 600 ; i ++){ f[i] = f[i-1].add(f[i-2]) ; } BigInteger a ; BigInteger b ; int count ; while(cin.hasNextBigInteger()){ a = cin.nextBigInteger() ; b = cin.nextBigInteger() ; if(a.compareTo(BigInteger.ZERO) == 0 && b.compareTo(BigInteger.ZERO) == 0){ break ; } count = 0 ; for(i = 1 ; i <= 600 ; i ++){ if(b.compareTo(f[i]) < 0) break ; if(a.compareTo(f[i]) <= 0 && b.compareTo(f[i]) >= 0){ count ++ ; } } System.out.println(count) ; } } }
相关文章推荐
- 数论 - 高精度Fibonacci数 --- UVa 10183 : How Many Fibs ?
- UVa 10183 How Many Fibs? (统计斐波那契数个数&高精度)
- UVA 10183 How Many Fibs?
- uva 10183 - How Many Fibs?(斐波那契数)
- UVa 10183 - How Many Fibs?
- UVA10183 - How Many Fibs?(java大数+二分)
- UVA - 10183 - How Many Fibs? (斐波那契 + 高精度)
- UVa:10183 How Many Fibs?
- UVa 10183 - How Many Fibs?
- UVA 10183 How Many Fibs?(高精度 斐波那契)
- UVa 10183 - How Many Fibs?
- UVa10183 - How Many Fibs?
- UVA 10183 How Many Fibs?
- uva 10183 how many fibs
- UVA - 10183 How Many Fibs? —— 大数斐波那契
- UVA 10183 How Many Fibs?
- UVa Problem Solution: 10183 - How many fibs?
- UVA - 10183 How Many Fibs? (大数)
- UVA 10183 How Many Fibs?
- UVa 10183/EOJ 1297/POJ 2413/HDU 1316/ZOJ 1962 How many Fibs?【Java大整数类应用】