C++ 实现:N 盏灯经 M 人操作后哪些灯关闭?附代码详解
```cpp #include <iostream> using namespace std; int main() { int N, M; // 读取输入的N和M cin >> N >> M; // 定义一个布尔数组来表示灯的状态,初始全部为打开(true) bool lights[5001] = {true}; for (int i = 1; i <= N; i++) { lights[i] = true; } // 模拟每个人对灯的操作 for (int person = 1; person <= M; person++) { for (int light = person; light <= N; light += person) { // 对编号为person倍数的灯做相反处理 lights[light] =!lights[light]; } } // 标记是否是第一个输出的编号 bool first = true; // 输出关闭的灯的编号 for (int i = 1; i <= N; i++) { if (!lights[i]) { if (!first) { cout << ","; } cout << i; first = false; } } return 0; } ``` 代码解释: 1. 输入读取:使用`cin`读取输入的`N`和`M`,分别表示灯的数量和人的数量。 2. 灯状态初始化:定义一个布尔数组`lights`来表示灯的状态,初始时所有灯都处于打开状态(`true`)。 3. 模拟操作:通过两层循环模拟每个人对灯的操作。外层循环遍历每个人,内层循环遍历该人编号倍数的灯,并将其状态取反。 4. 输出结果:遍历所有灯,将关闭的灯的编号输出,编号之间用逗号分隔。使用`first`变量来标记是否是第一个输出的编号,避免在第一个编号前输出逗号。 ######[AI问答 | 441点数解答 | 2025-11-24 13:49:37]
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)78
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)79
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- 揭秘:JavaScript 开发中 React 重新渲染触发方法及渲染时的具体操作(阿里通义 | 414点数解答 | 2023-11-09 01:52:26)336
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)231
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- Java 状态模式:模拟 TCP 连接多种状态及行为转换(GPT | 2147点数解答 | 2024-12-19 22:19:37)292
- Java实现状态模式:模拟TCP连接状态管理及行为处理(GPT | 1541点数解答 | 2024-12-19 22:19:57)281
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)471
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)361
- Golang开发必备:两种实现GET操作的神级方法揭秘!(百度文心 | 465点数解答 | 2023-11-09 18:11:57)249
- 仅一次交换,小写字母字符串能否变身周期字符串?(字节豆包 | 189点数解答 | 2024-10-13 15:08:54)319