1 条题解
-
0
#include <iostream> using namespace std; int main() { int N, M; // N为硬币总数,M为操作的人数 // [1] 输入硬币数量N和操作人数M cin >> N >> M; int arr[5005] = {0}; // 存储硬币状态(0=正面向上,1=反面向上),数组大小满足N≤5000 // [2] 模拟M个人依次翻转硬币的过程 for (int k = 1; k <= M; ++k) { // [3] 第k个人翻转所有编号为k的倍数的硬币 for (int i = k; i <= N; i += k) { arr[i] = 1 - arr[i]; // 翻转状态:0变1,1变0 } } // [4] 遍历所有硬币,收集并输出正面向上(状态为0)的硬币编号 for (int i = 1; i <= N; ++i) { if (arr[i] == 0) { cout << i << " "; } } return 0; }
- 1
信息
- ID
- 1205
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者