HDOJ 1316 How Many Fibs?

本文介绍了一种高效计算指定区间内斐波那契数列元素数量的方法。通过预计算斐波那契数列并利用递增特性,在给定范围内快速确定FIB数的数量。代码使用了Java语言实现,并通过了HDU 1316题目的测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接: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); } } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值