标签:
这一天,小Y、小D、小C正在愉快地玩耍。
小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 nn。
小D是个机灵鬼,很快从小Y嘴里套出了 nn 的值。然后在脑内把 nn 写成了 a×ba×b的形式。其中 a,ba,b都是正整数。
小C是个八卦狂,他发现小D从小Y那里获知了神奇的东西,于是死缠烂打追问小D。最后小D说道:“我可以告诉你正整数 gg 和 ll 的值,我保证 ab=gab=gl=n 且 a,ba,b 都是 gg的倍数。但是 a,ba,b 我可不能告诉你。”
这可急坏了小C。他决定退而求其次,找出a+ba+b的最小值和最大值。请你帮帮他吧!
第一行一个正整数 TT,表示有 TT 组询问。
接下来 TT 行每行两个正整数 gg,l 表示一组询问。
对于每个询问输出一行两个正整数,分别表示 a+ba+b 的最小值与最大值。保证问题有解。
C/C++ 输入输出 long long 时请用 %lld
。C++ 可以直接使用 cin/cout 输入输出。
1
1 4
4 5
只有三组解:{a=1,b=4},{a=2,b=2},{a=4,b=1}{a=1,b=4},{a=2,b=2},{a=4,b=1}。
1
2 8
8 10
测试点编号 | gg,l |
---|---|
1 | ≤103≤103 |
2 | |
3 | |
4 | ≤109≤109 |
5 | |
6 | |
7 | ≤1018≤1018 |
8 | |
9 | |
10 |
保证 TT≤5。
正解:数学
解题报告:
水题,直接yy一下就可以想到了。注意先转成long double!!!
1 //It is made by jump~ 2 #include <iostream> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cstdio> 6 #include <cmath> 7 #include <algorithm> 8 #include <ctime> 9 #include <vector> 10 #include <queue> 11 #include <map> 12 #include <set> 13 #ifdef WIN32 14 #define OT "%I64d" 15 #else 16 #define OT "%lld" 17 #endif 18 using namespace std; 19 typedef long long LL; 20 LL a,b; 21 22 inline int getint() 23 { 24 int w=0,q=0; 25 char c=getchar(); 26 while((c<‘0‘ || c>‘9‘) && c!=‘-‘) c=getchar(); 27 if (c==‘-‘) q=1, c=getchar(); 28 while (c>=‘0‘ && c<=‘9‘) w=w*10+c-‘0‘, c=getchar(); 29 return q ? -w : w; 30 } 31 32 inline LL getlong() 33 { 34 LL w=0,q=0; 35 char c=getchar(); 36 while((c<‘0‘ || c>‘9‘) && c!=‘-‘) c=getchar(); 37 if (c==‘-‘) q=1, c=getchar(); 38 while (c>=‘0‘ && c<=‘9‘) w=w*10+c-‘0‘, c=getchar(); 39 return q ? -w : w; 40 } 41 42 inline void work(){ 43 int T=getint(); 44 while(T--){ 45 a=getlong(); b=getlong(); 46 long double ans=(long double)a*(long double)b; ans=sqrt(ans); 47 printf("%lld ",(LL)ans*2); ans=(long double)a+(long double)b; 48 printf("%lld\n",(LL)ans); 49 } 50 } 51 52 int main() 53 { 54 work(); 55 return 0; 56 }
标签:
原文地址:http://www.cnblogs.com/ljh2000-jump/p/5763544.html