hdu 1316(大数——求一定范围内斐波那契数的个数)
发布时间:2020-12-14 04:02:22 所属栏目:大数据 来源:网络整理
导读:题目大意:输入a,b,求在[a,b]之间的斐波那契数的个数 解题思路:大数。 1)对于a.compareTo(b)。如果ab,则返回值0,为负数。如果a==b,则返回值为0,如果ab,则返回值0,为整数 代码如下: package com.njupt.bigInteger;import java.math.BigInteger;import j
题目大意:输入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^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); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读