TOJ 1345 大数斐波那契数列
来源:互联网 发布:阿里云域名 编辑:程序博客网 时间:2024/05/21 04:00
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){}}}
0 0
- TOJ 1345 大数斐波那契数列
- 大数斐波那契数列
- 斐波那契数列{大数问题}
- 大数斐波那契数列
- 斐波那契数列+大数加法
- 斐波那契数列大数加法
- 大数相加+斐波那契数列
- java大数 斐波那契数列
- 大数加法 + 斐波那契数列
- 大数斐波那契数列+取余
- 循环-小蜜蜂-斐波那契数列-大数加法
- 斐波那契数列第N项(大数)
- 斐波那契数列 大数加法hdu1316
- hdoj 1715 大菲波数 【大数斐波那契数列】
- 大数斐波那契数列+取余
- Java大数 HDU1042 + 斐波那契数列
- HDU 5686(斐波那契数列大数)
- 大数相加+斐波那契数列(1)
- 详解python linecache模块读取文件的方法
- Android中的so注入(inject)和挂钩(hook)
- Android的MediaPlayer架构介绍
- sublime text 中ExportHTML插件没有反应
- hashCode与equals方法
- TOJ 1345 大数斐波那契数列
- Rails
- Berkeley Caffe vs Toronto Convnet 大作战
- smartHGU智能模块写程序时的心得
- 【weblogic】连接池连接数优化设置
- oc 结构的相关总结
- Linux的目录结构
- Object-c 之 字符串
- android log