UVA11388 发表于 2017-03-11 | 分类于 algorithm 题目链接 Uva11388 题目大意已知两个数的最大公约数(GCD)和最小公倍数(LCM), 求两个数字, 要求第一个数字最小, 第二个数字最大 解题思路1234567由GCD和LCD的性质得,LCM * GCD == a * b,a = xG;b = yG;L / G == x * y;若L % G != 0; 则说明 x * y 中存在小数 即无解若有解, 最小为G 另一个为L 代码1234567891011121314151617181920212223242526272829303132#include <iostream>using namespace std;int gcd(int, int);int lcm(int, int);int main(){ int nTest; cin >> nTest; while(nTest) { int G, L; cin >> G >> L; if(L % G != 0) { cout << -1 << endl; nTest--; continue; } cout << G << " " << L << endl; nTest--; } return 0;}int gcd(int a, int b){ while(b ^= a ^= b ^= a %= b); return b;}int lcm(int a, int b){ return (a * b) / gcd(a, b);}