【UER #1】猜数

这一天,小Y、小D、小C正在愉快地玩耍。

小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 n。

小D是个机灵鬼,很快从小Y嘴里套出了 n 的值。然后在脑内把 n 写成了 a×b的形式。其中 a,b都是正整数。

小C是个八卦狂,他发现小D从小Y那里获知了神奇的东西,于是死缠烂打追问小D。最后小D说道:“我可以告诉你正整数 g 和 l 的值,我保证 ab=gl=n 且 a,b 都是 g的倍数。但是 a,b 我可不能告诉你。”

这可急坏了小C。他决定退而求其次,找出a+b的最小值和最大值。请你帮帮他吧!

输入格式

第一行一个正整数 T,表示有 T 组询问。

接下来 T 行每行两个正整数 g,l 表示一组询问。

输出格式

对于每个询问输出一行两个正整数,分别表示 a+b 的最小值与最大值。保证问题有解。

C/C++ 输入输出 long long 时请用 %lld。C++ 可以直接使用 cin/cout 输入输出。

样例一

input

1

1 4

output

4 5

explanation

只有三组解:{a=1,b=4},{a=2,b=2},{a=4,b=1}。

样例二

input

1

2 8

output

8 10

保证 T≤5。

时间限制:1s

空间限制:256MB

题解

UOJ自带题解:

算法一

直接暴力枚举所有可能的 a,b 然后判定。可以得30分。

算法二

由于 a,b 都是 g 的倍数,而 ab=gl=n,所以当然 l 也是 g 的倍数。

既然如此,我们可以暴力枚举所有 l/g=st 的拆分,然后 a=gs,b=gt。

于是暴力枚举所有 l/g 的约数,是 O(l/g−−−√) 的。可以得60分。

算法三

其实根本不用枚举约数。

考虑最小值。只看 n=ab 这个限制,根据均值不等式,最小值显然在 {a=n−√,b=n−√} 时取到。而根据题目条件,这显然是一组合法解。所以最小值就是 2gl−−√。

考虑最大值。只看 n=ab,a≥g 这两个限制。显然最大值在 {a=g,b=l} 时取到。而根据题目条件,这显然是一组合法解。所以最大值就是 g+l。

这样好好写就能获得 100 分。

精度问题

有人可能会写:

ans_min = (long long)sqrt((double)g * l);

这样会被卡精度,因为double大概只有15位10进制有效数字。只能得到60分。

解决方法是:

ans_min = (long long)sqrt(l / g) * g;

当然有人可能直接long double保平安了……

代码

int main()
{
int t;
cin>>t;
while(t--)
{
LL g,l;
cin>>g>>l;
cout<<2*(long long)sqrt((long double)g*l)<<" "<<g+l<<endl;
}
return 0;
}

UOJ 12 猜数 数学题的更多相关文章

  1. 【UER #1】[UOJ#12]猜数 [UOJ#13]跳蚤OS [UOJ#14]DZY Loves Graph

    [UOJ#12][UER #1]猜数 试题描述 这一天,小Y.小D.小C正在愉快地玩耍. 小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 n. 小D是个机灵鬼,很快从小Y嘴里套出了 n的值.然后 ...

  2. [UOJ 12]猜数

    Description

  3. uoj problem 12 猜数

    题目大意 每次询问给出g,l,有\(a*b = g*l = n\),且\(a,b\)均为\(g\)的倍数.求\(a+b\)的最小值和\(a-b\)的最大值. 题解 因为\(a,b\)均为\(g\)的倍 ...

  4. 【BZOJ 1594】 [Usaco2008 Jan]猜数游戏 (二分+并查集)

    1594: [Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面 ...

  5. 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集

    [BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...

  6. bzoj 1594: [Usaco2008 Jan]猜数游戏——二分+线段树

    Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面摆N(1 <= N<= 1,000,00 ...

  7. 【bzoj1594】猜数游戏

    1594: [Usaco2008 Jan]猜数游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 556  Solved: 225 Descripti ...

  8. 剑指Offer - 九度1360 - 乐透之猜数游戏

    剑指Offer - 九度1360 - 乐透之猜数游戏2014-02-05 19:54 题目描述: 六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工.为了增添一点趣味性,他还准备 ...

  9. BZOJ 1594 [Usaco2008 Jan]猜数游戏(线段数)

    1594: [Usaco2008 Jan]猜数游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 626  Solved: 260[Submit][S ...

随机推荐

  1. ansible批量修改linux服务器密码的playbook

    从网上找到批量修改Linux服务器root密码的playbook. 使用方法: 1.输入要修改的inventory组 2.按需要,在playbook中输入要修改的IP.新密码,如下: - hosts: ...

  2. nginx配置location总结及rewrite规则写法【转】

    转自 nginx配置location总结及rewrite规则写法 | Sean's Noteshttp://seanlook.com/2015/05/17/nginx-location-rewrite ...

  3. 修改类不用重启Tomcat加载整个项目

    可以修改类不用重启Tomcat加载整个项目(手工启动) 配置reloadable=true(自动重载) 使用Debug模式,前提是仅限于局部修改.(修改类不用重启--热加载) Tomcat轻小,而We ...

  4. JS可以监控手机的返回键吗?

    html5的话 一进页面就pushState,然后监控onpopstate不过好像没有办法知道是前进还是后退我的奇淫巧计是,一个数字变量,pushState一个锚,锚是这个数字,前进一个页面数字+1, ...

  5. FTRL算法

    稀疏解的作用:内存和时间啊 实际的互联网广告应用需要的是快速地进行model的更新.为了保证快速的更新,训练样本是一条一条地过来的,每来一个样本,model的参数对这个样本进行一次迭代,从而保证了mo ...

  6. 虚拟机 CentOS7 64

    下载地址:https://www.centos.org/download/ 下载完后以后使用虚拟机安装即可

  7. git —— 远程仓库(操作)

    运行目录:本地仓库目录 1.本地关联远程仓库 $ git remote add origin 你的远程库地址(SSH和HTTP都可以) 2.远程仓库为空,可选择合并远程仓库和本地仓库,远程库不为空时, ...

  8. JS实现幸运抽奖页面

    JS实现简单的幸运抽奖页面 效果图: 图片素材 : 代码如下,复制即可使用: <!DOCTYPE html> <html> <head lang="en&quo ...

  9. 20165301 2017-2018-2《Java程序设计》课程总结

    20165301 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期待的师生关系 预备作业2:学习基础与c语言学习心得 预备作业3: Linux安装及命 ...

  10. sicily 1051. Biker's Trip Odomete

    DescriptionMost bicycle speedometers work by using a Hall Effect sensor fastened to the front fork o ...