TOJ 1345 大数斐波那契数列
发布时间:2020-12-14 03:28:45 所属栏目:大数据 来源:网络整理
导读:TOJ 1345? ? How Many Fibs? 比较水的一个题目 题意很简单 ?: 给出俩数,求出这俩数之间有几个斐波那契数:但是需要注意的是:? 题目中开始三个位: 1 2 3 ,而不是常用的:1 1 2 3 ,另外考虑到大数,就直接java 了; fibs[500]就已经超过了100位: 代码:
TOJ 1345??How Many Fibs? 比较水的一个题目 题意很简单?: 给出俩数,求出这俩数之间有几个斐波那契数:但是需要注意的是:? 题目中开始三个位: 1 2 3 ,而不是常用的:1 1 2 3 ,另外考虑到大数,就直接java 了; fibs[500]就已经超过了100位: import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { try{ BigInteger[] fib = new BigInteger[500]; fib[1]=new BigInteger("1");fib[2]=new BigInteger("2"); for(int i=3;i<500;i++) { fib[i]=fib[i-1].add(fib[i-2]); } String a,b; Scanner in = new Scanner(System.in); while(in.hasNext()) { a=in.next(); b=in.next(); BigInteger f1=new BigInteger(a); BigInteger f2 =new BigInteger(b); if(f1.compareTo(new BigInteger("0"))==0&&f2.compareTo(new BigInteger("0"))==0)break; int left=0,right=0; boolean flag=false; for( int i=1;i<500;i++) { BigInteger t1=fib[i].subtract(f1); BigInteger s1=fib[i+1].subtract(f1); BigInteger t2=fib[i].subtract(f2); BigInteger s2=fib[i+1].subtract(f2); if(!flag&&t1.signum()==1)left=1; if(t1.signum()==-1&&s1.signum()==1) {left=i+1;flag=true;}// 找到大于等于左边的数的最小下标 if(t1.signum()==0) {left=i;flag=true;} if((t2.signum()==-1&&s2.signum()==1)||t2.signum()==0){right=i;break;}//找出小于等于右边数的最大小标 } System.out.println(right-left+1); } } catch(Exception e){} } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |