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]
- Python实现查询7天内指定日期温度及开发建议(字节豆包 | 595点数解答 | 2026-05-23 11:19:59)9
- C++实现查询7天温度功能及开发建议(字节豆包 | 536点数解答 | 2026-05-23 11:20:54)9
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)109
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)72
- 解决代码WA问题:修改整数溢出问题后的计算代码(字节豆包 | 749点数解答 | 2026-05-10 16:20:03)27
- 修正代码解决计算 f(l, r) 和出现的 WA 问题(字节豆包 | 806点数解答 | 2026-05-10 16:21:37)27
- PHP利用通信证书对请求报文data部分计算p7分离式签名结果数据全流程指南(讯飞星火 | 446点数解答 | 2023-12-07 17:06:14)326
- PHP利用OpenSSL扩展:实现对请求报文data部分的P7分离式签名计算(阿里通义 | 306点数解答 | 2023-12-07 17:06:58)285
- PHP利用颁发通信证书,轻松计算请求报文data部分P7分离式签名结果 (讯飞星火 | 483点数解答 | 2023-12-07 17:12:57)308
- PHP 利用通信证书为请求报文 data 部分计算 P7 分离式签名结果数据全流程揭秘 ( | 343点数解答 | 2023-12-07 17:13:17)253
- PHP利用openssl库:实现请求报文data部分P7分离式签名计算与验证 (阿里通义 | 344点数解答 | 2023-12-07 17:13:51)251
- Python Tkinter 代码剖析:GUI 程序搭建与窗口居中函数解析(字节豆包 | 314点数解答 | 2024-08-02 14:49:22)351