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 ...
随机推荐
- 【Android开发】之Fragment开发1
一直知道Fragment很强大,但是一直都没有去学习,现在有些空闲的时间,所以就去学习了一下Fragment的简单入门.我也会把自己的学习过程写下来,如果有什么不足的地方希望大牛指正,共同进步! 一. ...
- java基础56 HTML5的标签知识(网页知识)
本文知识点(目录): 1.html常用标签 2.html实体标签 3.html媒体标签 4.html超链接标签 5.html图片标签 6.html标个标签 7.html框 ...
- 洛谷P2002消息扩散
传送门啦 这个题就是tarjan强连通分量与入度的例题了. 思路: 利用缩点的思想,先预处理一下所有的强连通分量,然后把每个强连通分量内的所有节点看做一个节点,然后处理一张新图,然后检查每个点的入度, ...
- 10 个优质的 Laravel 扩展推荐
这里有 10+ 个用来搭建 Laravel 应用的包 为何会创建这个包的列表?因为我是一个「比较懒」的开发者,在脸书上是多个 Laravel 小组的成员.平日遇到最多的问题就是开发是需要用那些包.我很 ...
- Vue select 下拉菜单
1.html <div id="app-8"> <select v-model="selected"> <option v-for ...
- 用django-cors-headers做跨域
什么是CORS? CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,可以让Ajax实现跨域访问. 其实,在服务器的response header ...
- 函数fgets和fputs、fread和fwrite用法小结(转)
字符串读写函数fgets和fputs: 1.fgets()函数:原型char *fgets(char *s, int n, FILE *stream);从流中读取n-1(n默认1024)个字符之前,如 ...
- Sourcetree使用 - git图形化工具(三)
前面两个章节总结了Sourcetree的安装与配置Sourcetree密钥,这个章节主要讲如何使用Sourcetree.以前呢,都是使用git Bash进行命令行方式进行操作git,感觉部分时间浪费在 ...
- LoadRunner常用知识点-----LoadRunner日志输出
在Windows环境下,日志文件output.txt保存在脚本目录中:在UNIX环境下,保存在标准输出中. [Vuser]——[Run Time Settings]——[General]——[Log] ...
- Codeforces Round #334 (Div. 1) B. Moodular Arithmetic
B - Moodular Arithmetic 题目大意:题意:告诉你p和k,其中(0<=k<=p-1),x属于{0,1,2,3,....,p-1},f函数要满足f(k*x%p)=k*f( ...