UVa 11388

  题目大意:给出两个数的最大公约数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 }
View Code
原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3329768.html