UOJ 12 猜数

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

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

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

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

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

输入格式

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

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

输出格式

对于每个询问输出一行两个正整数,分别表示 a+ba+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}{a=1,b=4},{a=2,b=2},{a=4,b=1}。

样例二

input

1
2 8

output

8 10

#include<cmath>
#include<iostream>
using namespace std;
int main()
{
    int T;
    long long g,l;
    cin>>T;
    while(T--)
    {
        cin>>g>>l;
        cout<<(long long)sqrt(l/g)*2*g<<' '<<g+l<<endl;
    }
} 
原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/7411807.html