题目大意:给出两个数的最大公约数G和最小公倍数L,求出这两个数。
根据a*b = GCD * LCM,然后枚举判断就好了。
1 #include <cstdio> 2 typedef unsigned long long ull; 3 4 int main() 5 { 6 int T; 7 scanf("%d", &T); 8 while (T--) 9 { 10 ull g, l; 11 scanf("%llu%llu", &g, &l); 12 ull t = g * l, a, b; 13 bool ok = false; 14 for (a = g; a*a <= t; a += g) 15 if (t % a == 0) 16 { 17 b = t / a; 18 if (b % g == 0) 19 { 20 ok = true; 21 break; 22 } 23 } 24 if (ok) printf("%llu %llu ", a, b); 25 else printf("-1 "); 26 } 27 return 0; 28 }