CF1916B Two Divisors
思路
看到题目要求求一个数
首先
所以如果最小公倍数不是答案,就没有答案了,而题目又保证了存在答案,所以这种情况最小公倍数就是答案。
再考虑有些情况会导致最小公倍数等于
AC code
#include<bits/stdc++.h>
using namespace std;
long long T,a,b,gc;
int main()
{
scanf("%lld",&T);
while(T--)
{
scanf("%lld%lld",&a,&b),gc=__gcd(a,b),a/=gc,b/=gc,b*=a;//此时,b是最小公倍数除以最大公因数
if(a==1) b*=b;//如果b是a的倍数,那么答案需要额外乘以b/a
printf("%lld\n",b*gc);//记得把最大公因数乘回去
}
return 0;
}