这个问题可以通过计算最大公约数 (GCD) 和最小公倍数 (LCM) 来解决。我们需要找到一个整数,它是 a, b, c 的 GCD 的倍数,同时也是 d, e, f 的 LCM 的约数。
以下是解决这个问题的步骤:
1. 计算 a, b, c 的最大公约数。
2. 计算 d, e, f 的最小公倍数。
3. 检查是否存在一个整数,它是步骤 1 中得到的 GCD 的倍数,同时也是步骤 2 中得到的 LCM 的约数。
以下是实现这个算法的 C++ 代码:
#include <iostream>
#include <algorithm>int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);
}int lcm(int a, int b) {return a / gcd(a, b) * b;
}int main() {int a, b, c, d, e, f;while (std::cin >> a >> b >> c >> d >> e >> f && (a || b || c || d || e || f)) {int gcd_abc = gcd(gcd(a, b), c);int lcm_def = lcm(lcm(d, e), f);if (lcm_def % gcd_abc == 0) {std::cout << "YES" << std::endl;} else {std::cout << "NO" << std::endl;}}return 0;
}
这段代码首先定义了两个函数:gcd 和 lcm,分别用于计算两个数的最大公约数和最小公倍数。然后在主函数中,我们读取输入,计算 a, b, c 的最大公约数和 d, e, f 的最小公倍数,然后检查是否存在一个整数,它是最大公约数的倍数,同时也是最小公倍数的约数。如果存在,我们输出 "YES",否则输出 "NO"。