签到题,但是不如 E。
题意简述
给定 x 和 y。求一组 (a,b) 使 gcd(x,y)lcm(x,y)=ab 且 a×b 最大。
思路
两边平方,得 gcd(x,y)lcm(x,y)=a2b。
两边同时除以 a,得 agcd(x,y)lcm(x,y)=ab。
gcd(x,y)lcm(x,y) 是定值,所以我们要 a 最小。
a 最小显然是 1,则 b 是 gcd(x,y)lcm(x,y),于是输出即可。
代码
#include<bits/stdc++.h>
using namespace std;
void solve(long long a,long long b){
long long g=(a*b/__gcd(a,b))/__gcd(a,b);
printf("1 %lld\n",g);
}
int T;
long long a,b;
int main(){
scanf("%d",&T);
while(T--){
scanf("%lld%lld",&a,&b);
solve(a,b);
}
return 0;
}