UOJ 12 猜数 数学题
【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 猜数 数学题的更多相关文章
- 【UER #1】[UOJ#12]猜数 [UOJ#13]跳蚤OS [UOJ#14]DZY Loves Graph
[UOJ#12][UER #1]猜数 试题描述 这一天,小Y.小D.小C正在愉快地玩耍. 小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 n. 小D是个机灵鬼,很快从小Y嘴里套出了 n的值.然后 ...
- [UOJ 12]猜数
Description
- uoj problem 12 猜数
题目大意 每次询问给出g,l,有\(a*b = g*l = n\),且\(a,b\)均为\(g\)的倍数.求\(a+b\)的最小值和\(a-b\)的最大值. 题解 因为\(a,b\)均为\(g\)的倍 ...
- 【BZOJ 1594】 [Usaco2008 Jan]猜数游戏 (二分+并查集)
1594: [Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面 ...
- 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集
[BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...
- bzoj 1594: [Usaco2008 Jan]猜数游戏——二分+线段树
Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面摆N(1 <= N<= 1,000,00 ...
- 【bzoj1594】猜数游戏
1594: [Usaco2008 Jan]猜数游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 556 Solved: 225 Descripti ...
- 剑指Offer - 九度1360 - 乐透之猜数游戏
剑指Offer - 九度1360 - 乐透之猜数游戏2014-02-05 19:54 题目描述: 六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工.为了增添一点趣味性,他还准备 ...
- BZOJ 1594 [Usaco2008 Jan]猜数游戏(线段数)
1594: [Usaco2008 Jan]猜数游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 626 Solved: 260[Submit][S ...
随机推荐
- pymongo的几个操作
# -*- coding: utf-8 -*- # @Time : 2018/9/11 17:16 # @Author : cxa # @File : mongotest.py # @Software ...
- Django 内置模板标签和过滤器
一.内置模板标签 语法:{% %} autoescape : 是否转义,on或off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束 {% autoescape on % ...
- Pytorch自定义数据库
1)前言 虽然torchvision.datasets中已经封装了好多通用的数据集,但是我们在使用Pytorch做深度学习任务的时候,会面临着自定义数据库来满足自己的任务需要.如我们要训练一个人脸关键 ...
- pyquery学习笔记
很早就听说了pyquery的强大.写了个简单的测试程序实验下. 思路是找个动态网页,先用PhantomJS加载,然后用PYQUERY解析. 1.随便找了个带表格的股票网页,里面有大量的股票数据,测试的 ...
- Nginx - keepliave 相关知识点
目录 - 1. 前言- 2. keepalive 介绍- 3. Nginx 与 keepalive 的关系 - 3.1 Nginx - keepalive_timeout - 3.2 Ng ...
- Nginx - 压缩模块
1. 前言 在 Nginx 中与网页压缩相关的模块有两个:一个是 HttpGzipModule,另一个是 HttpGzipStaticModule.前者用于启用在文件传输过程中使用 gzip 压缩,而 ...
- SQL语句添加删除修改字段[sql server 2000/2005]
用SQL语句添加删除修改字段1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME ...
- qt 问题及处理
1. 包依赖问题 在windows平台时,通过microsoft process Explorer可以查看所以来的dll.并将这些dll复制到应用程序目录,加上qt.conf就可以使用了. [Path ...
- Sourcetree使用 - git图形化工具(三)
前面两个章节总结了Sourcetree的安装与配置Sourcetree密钥,这个章节主要讲如何使用Sourcetree.以前呢,都是使用git Bash进行命令行方式进行操作git,感觉部分时间浪费在 ...
- codis+redis集群学习整理(待续)
Codis 由四部分组成: Codis Proxy (codis-proxy) Codis Manager (codis-config) Codis Redis (codis-server) ZooK ...