洛谷p1783 c++
时间: 2025-01-05 08:36:37 浏览: 10
### 关于洛谷 P1783 的 C++ 解法
针对洛谷 P1783 题目,该题目涉及的是关于约瑟夫斯问题的一种变体。解决此问题的方法之一是通过模拟过程来实现。
下面是一个可能的 C++ 实现方式:
```cpp
#include <iostream>
using namespace std;
const int MAXN = 100005;
int n, m, k;
bool vis[MAXN]; // 标记数组用于记录某位置的人是否已经被移除
void solve() {
int cnt = 0, pos = 0; // 初始化计数器和当前位置指针
while (cnt < n - 1) { // 当还有未被淘汰者时循环执行
int step = 0;
while (step < m || !vis[pos]) {
if (!vis[pos])
++step;
pos = (pos + 1) % n; // 循环遍历队伍中的每个人
}
cout << pos + 1 << " "; // 输出被淘汰者的编号(注意转换为实际序号)
vis[pos] = true; // 将此人标记为已淘汰
++cnt; // 增加已经处理掉的人的数量
}
}
int main() {
cin >> n >> m;
memset(vis, false, sizeof(vis)); // 初始状态下所有人都没被淘汰
solve();
return 0;
}
```
上述代码实现了对给定参数 `n` 和 `m` 下的约瑟夫斯问题求解,并按照要求输出每一轮被选中离开圈子的人的位置[^1]。
阅读全文