2852: 强大的区间

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 45  Solved: 12
[Submit][Status][Discuss]

Description

curimit很喜欢区间,最近发现了一种很强大的区间。
curimit发现有的区间虽小,比如 (1.99998, 2.000001),但是其中却包含了一个整数2。
但是有的区间较大,比如(1.0001, 1.99998),但是其中却一个整数都没有。
他觉得包含整数的区间很强大,并且提出了一个问题:
我们先给出两个非负实数a,b我们要求一个最小的正整数k ,使得区间(a*k, b*k)是一个包含至少一个整数的区间。
举个例子来说吧,比如我们输入a=1.2   b=1.3 ,那么:
当k=1时, 区间为(1.2 , 1.3)  其中没有整数;
当k=2时, 区间为(2.4 , 2.6)  其中没有整数;
当k=3时, 区间为(3.6 , 3.9)  其中没有整数;
当k=4时, 区间为(4.8 , 5.2)  其中包含了一个整数5。
所以使得区间(1.2*k, 1.3*k)包含一个整数的最小正整数k是4。

Input

两个非负实数a,b。

Output

最小的k的值。

Sample Input

1.2 1.3

Sample Output

4

Hint

HINT

a,b整数部分不超过2^31-1,a,b小数部分位数不超过300位。

这样的题还是很好耍的。首先(a,b)与(a-1,b-1)答案相同,所以保证a<1,若此时b>=0,return 1,否则假设答案为k,中间的数为t,那么我们可以吧原来的范围限定t的式子【a*k<=t<=b*k】化成限定k的【t/b<=k<=t/a】,然后发现就是一个子问题啦。

话说我这个真的是辗转相除吗,我看网上的程序还用了gcd的。。。。

import java.util.*;
import java.math.*; public class b2852
{
static BigDecimal solve(BigDecimal a,BigDecimal b)
{
BigDecimal c;
c=a;
c=c.setScale(0,BigDecimal.ROUND_DOWN);
a=a.subtract(c);
b=b.subtract(c);
//System.out.println(a.toString());
//System.out.println(b.toString());
if (b.compareTo(BigDecimal.ONE)>=0)
return BigDecimal.ONE;
b=BigDecimal.ONE.divide(b,1000,BigDecimal.ROUND_HALF_UP);
a=BigDecimal.ONE.divide(a,1000,BigDecimal.ROUND_HALF_UP);
BigDecimal t=solve(b,a);
b=b.multiply(t);
return b.setScale(0,BigDecimal.ROUND_UP);
}
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
BigDecimal a=in.nextBigDecimal();
BigDecimal b=in.nextBigDecimal();
a.setScale(1000,BigDecimal.ROUND_HALF_UP);
b.setScale(1000,BigDecimal.ROUND_HALF_UP);
System.out.println(solve(a,b).toString());
}
};

bzoj 2852: 强大的区间 辗转相除的更多相关文章

  1. BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)

    题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...

  2. Alice and Bob 要用到辗转相减

    Alice and BobTime Limit: 1 Sec  Memory Limit: 64 MBSubmit: 255  Solved: 43 Description Alice is a be ...

  3. (中等) CF 585C Alice, Bob, Oranges and Apples,矩阵+辗转相除。

    Alice and Bob decided to eat some fruit. In the kitchen they found a large bag of oranges and apples ...

  4. [Luogu1891]疯狂LCM[辗转相减法]

    题意 多组询问,每次给定 \(n\) ,求:\(\sum_{i=1}^nlcm(i,n)\) . \(\rm T \leq 3\times 10^4\ ,n \leq 10^6\). 分析 推式子: ...

  5. Luogu4111 [HEOI2015]小Z的房间 (矩阵树,辗转相除高斯消元)

    除法不能用于同余系,要辗转相除.注意不能加入柱子到矩阵. #include <iostream> #include <cstdio> #include <cstring& ...

  6. BZOJ.4894.天赋(Matrix Tree定理 辗转相除)

    题目链接 有向图生成树个数.矩阵树定理,复习下. 和无向图不同的是,度数矩阵改为入度矩阵/出度矩阵,分别对应外向树/内向树. 删掉第i行第i列表示以i为根节点的生成树个数,所以必须删掉第1行第1列. ...

  7. python强大的区间处理库interval用法介绍

    原文发表在我的博客主页,转载请注明出处 前言 这个库是在阅读别人的源码的时候看到的,觉得十分好用,然而在网上找到的相关资料甚少,所以阅读了源码来做一个简单的用法总结.在网络的路由表中,经常会通过掩码来 ...

  8. BZOJ 1260&UVa 4394 区间DP

    题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...

  9. 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法

    前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...

随机推荐

  1. Cisco交换机设置管理IP

    需要准备一根CONSOLE线和带串行接口的电脑. (图1) 用CONSOLE线连接好电脑与交换机(交换机的CONSOLE口一般都有表示). 然后按照图1点“开始→程序→超级终端”会弹出来一个窗口(图2 ...

  2. Java为什么会超时

     java程序,最终是转成c运行的,我们写的程序会转成c代码,并且由底层的c程序调用,可以理解成我们程序最后变成被调用的c函数  底层的C程序是java虚拟机,由它读取我们的.class文件,翻译成c ...

  3. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  4. iOS 并行编程:Thread

    1 创建线程 1.1 NSThread       使用 NSThread 来创建线程有两个可以使用的方法: 1) 使用 detachNewThreadSelector:toTarget:withOb ...

  5. WinForm界面(一)

    一:Form对象 属性: 设计中的Name:窗体类的类名AcceptButton:窗口的确定按钮CancelButton:窗口按ESC的取消按钮 1.外观 Backcolor:背景颜色Forecolo ...

  6. C#用副线程改主线程(UI线程)的控件属性的方法(包括Winform和WPF)

    C#用副线程去试图修改主线程的UI控件会报出异常,解决方案是使用副线程注册事件通知主线程自己去修改UI控件 在winform中,方法如下 private void button1_Click(obje ...

  7. jsp页面中frameset的使用方法

    frame,是网页开发必须掌握的知识.例如后台架构.局部刷新,页面分割,都是frame的用途表现,尤其是后台页面制作,使用frame会给用户带来非常舒适的使用感受. frame知识点包括(frames ...

  8. html 如何引入一个公共的头部和底部

    2016-01-08 作者案:尽己之力,用心打造一个商城!当你有十二分力气时,发现用了十分力气依旧没什么进展,请不要放弃希望:或许你想得到的东西正在十二分力气的地方等你:假若你用尽了十二分力气,还是没 ...

  9. NUnit使用详解(二)

    转载:http://hi.baidu.com/grayworm/item/39aa11c5d9375d56bdef6990 五:常用断言 在NUnit中,断言是单元测试的核心.NUnit提供了一组丰富 ...

  10. web相关

    1. html 和 htm 的区别 如果一个网站有index.html和index.htm 默认情况下优先访问.html htm是为了兼容之前dos系统的命名规范. 2. http1.0短连接 htt ...