POJ2413二分
2015-07-01 15:59
204 查看
注意二分, 上界。
import java.beans.beancontext.BeanContext; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Scanner; import java.util.Stack; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) throws IOException{ InputReader in = new InputReader(System.in) ; StreamTokenizer cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); PrintWriter out = new PrintWriter(System.out); BigInteger f ; BigInteger f1 = BigInteger.valueOf(1) ; BigInteger f2 = BigInteger.valueOf(2) ; BigInteger up = BigInteger.valueOf(10).pow(100) ; ArrayList<BigInteger> fibo = new ArrayList<BigInteger>() ; fibo.add(f1) ; fibo.add(f2) ; for( ; (f = f1.add(f2) ).compareTo(up) <= 0 ; ){ fibo.add(f) ; f1 = f2 ; f2 = f ; } fibo.add(f1.add(f2)) ; for(;;){ int t = 0 ; f1 = new BigInteger(in.next()) ; f2 = new BigInteger(in.next()) ; if(f1.compareTo(BigInteger.ZERO) == 0 && f2.compareTo(BigInteger.ZERO) == 0) break ; int l = 0 , r = fibo.size() - 1 , mid , lid = 0 , rid = 0 ; while(l <= r){ mid = (l + r) >> 1 ; if(fibo.get(mid).compareTo(f1) >= 0){ lid = mid ; r = mid - 1 ; } else l = mid + 1 ; } l = 0 ; r = fibo.size() - 1 ; while(l <= r){ mid = (l + r) >> 1 ; if(fibo.get(mid).compareTo(f2) <= 0){ rid = mid ; l = mid + 1 ; } else r = mid - 1 ; } out.println(rid - lid + 1) ; //out.flush() ; } out.flush() ; } } class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = null; } public String next(){ while(tokenizer == null || !tokenizer.hasMoreTokens()){ try{ tokenizer = new StringTokenizer(reader.readLine()); }catch(IOException e){ throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public double nextDouble() { return Double.parseDouble(next()); } }
相关文章推荐
- 【故障解决】Ubuntu 登陆黑屏,无限卡在登陆页面的解决方法
- Android 点击按钮隐藏键盘
- Linux 下进程的内存空间分配
- linux内存源码分析 - 伙伴系统(初始化和申请页框)
- linux网络:常用命令(二)
- 转-安卓中实现两端对齐,中间fill_parent的方法
- oracle 创建命令
- 关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
- Android环境在C代码中使用logcat获取log
- Linux升级python2.7 +pip +mysqld
- [华为机试练习题]30.计算整数的位数
- 笔记本用HDMI、VGA连接高清电视全过程实录2——各种问题
- Ubuntu 源码安装 nginx 1.9.2
- Linux6.4的FTP参数
- App主界面交互框架一览
- 在SpringMVC中获取request对象的几种方式
- jdk1.8 ossbrowser打不开
- instanceof, isinstance,isAssignableFrom的区别
- 通过数据绑定模板得到对应的Item控件
- 保持好心态