题解:P10858 [HBCPC2024] Long Live

签到题,但是不如 E。

题意简述

给定 xxyy。求一组 (a,b)(a,b) 使 lcm(x,y)gcd(x,y)=ab\sqrt{\dfrac{\operatorname{lcm}(x,y)}{\gcd(x,y)}}=a\sqrt{b}a×ba\times b 最大。

思路

两边平方,得 lcm(x,y)gcd(x,y)=a2b\dfrac{\operatorname{lcm}(x,y)}{\gcd(x,y)}=a^2b

两边同时除以 aa,得 lcm(x,y)gcd(x,y)a=ab\dfrac{\frac{\operatorname{lcm}(x,y)}{\gcd(x,y)}}{a}=ab

lcm(x,y)gcd(x,y)\dfrac{\operatorname{lcm}(x,y)}{\gcd(x,y)} 是定值,所以我们要 aa 最小。

aa 最小显然是 11,则 bblcm(x,y)gcd(x,y)\dfrac{\operatorname{lcm}(x,y)}{\gcd(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;
}
posted @ 2024-08-11 18:59  Weslie_qwq  阅读(16)  评论(0)    收藏  举报  来源