酷代码 AI
菜单
服务商

C++ 计算两人再次同一天值日的最少天数

### 🌟问题分析 本题要求计算小杨和小红再次同一天值日的最少天数,实际上就是求两个值日周期 `m` 和 `n` 的最小公倍数(LCM)。 ### 💻代码实现 ```cpp #include <iostream> // 计算最大公约数 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; } int main() { int m, n; // 输入小杨和小红的值日周期 std::cin >> m >> n; // 计算并输出最小公倍数 std::cout << lcm(m, n) << std::endl; return 0; } ``` ### 📝代码解释 1. **`gcd` 函数**:该函数用于计算两个数的最大公约数,使用欧几里得算法(辗转相除法)实现。 2. **`lcm` 函数**:该函数用于计算两个数的最小公倍数,通过公式 `lcm(a, b) = a * b / gcd(a, b)` 计算。 3. **`main` 函数**:读取输入的 `m` 和 `n`,调用 `lcm` 函数计算最小公倍数并输出结果。 ### ⚙️复杂度分析 - **时间复杂度**:计算最大公约数的时间复杂度为 $O(log(min(m, n)))$,因此整个程序的时间复杂度也为 $O(log(min(m, n)))$。 - **空间复杂度**:只使用了常数级的额外空间,因此空间复杂度为 $O(1)$。 ### 🚀开发建议 - **输入验证**:在实际应用中,应该对输入的 `m` 和 `n` 进行验证,确保它们是正整数。 - **代码复用**:将 `gcd` 和 `lcm` 函数封装成独立的模块,方便在其他项目中复用。 ### 📚学习资源 - [C++ 官方文档](https://en.cppreference.com/w/) - 《C++ Primer》 ######[AI写代码神器 | 535点数解答 | 2026-05-25 20:57:18]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]