酷代码 AI
菜单
服务商

题目描述 给出四个数字n、m、k和q,请计算n~m之间(包括n和m)有多少个数能同时被k和q整除? 输入格式 一行,4个整数,数字之间用空格隔开。 输出格式 一行,一个整数,为满足条件的数字个数用C++简答

```cpp #include <iostream> using namespace std; // 计算最大公约数 int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } // 计算最小公倍数 int lcm(int a, int b) { return a / gcd(a, b) * b; } // 计算在n到m之间能被num整除的数的个数 int countDivisible(int n, int m, int num) { int first = (n + num - 1) / num * num; if (first > m) return 0; int last = m / num * num; return (last - first) / num + 1; } int main() { int n, m, k, q; cin >> n >> m >> k >> q; // 计算k和q的最小公倍数 int commonMultiple = lcm(k, q); // 计算n到m之间能被最小公倍数整除的数的个数 int result = countDivisible(n, m, commonMultiple); cout << result << endl; return 0; } ``` 代码解释 1. `gcd`函数:计算两个数的最大公约数,使用欧几里得算法。 2. `lcm`函数:计算两个数的最小公倍数,通过公式 `a * b / gcd(a, b)` 计算。 3. `countDivisible`函数:计算在 `n` 到 `m` 之间能被 `num` 整除的数的个数。 4. `main`函数: - 读取输入的 `n`、`m`、`k` 和 `q`。 - 计算 `k` 和 `q` 的最小公倍数。 - 调用 `countDivisible` 函数计算符合条件的数的个数。 - 输出结果。 [2025-12-21 22:06:02 | AI问答 | 471点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多