题解 | #小蓝的疑惑#

小蓝的疑惑

https://ac.nowcoder.com/acm/problem/265528

首先有定理:

注意到值域 可以直接从小到大枚举 ,利用 算出 ,再判断 是否分别为 即可

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
void solve() {
    int x, y;
    cin >> x >> y;
    for (int i = x; i <= y; i ++) {
        LL a = i, b = (LL)x * y / a;
        if (__gcd(a, b) == x && a * b / __gcd(a, b) == y) {
            cout << a << ' ' << b << "\n";
            return;
        }
    }
    puts("-1");
}
int main() {
    int T;
    cin >> T;
    while (T --) {
        solve();
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务