酷代码 AI
菜单
服务商

有 n n个人围坐在一个圆桌周围,把这 n n个人一次编号为 1 , 2 , … , n 1,2,…,n。从编号是 1 1 的人开始报数,数到第 m m个人就出列,然后从出列的下一个人重新开始报数,数到第m个人又出列……..如此反复,直到所有人都出列为止。给出 n n和 m m的值,输出出列顺序。 输入 第一行两个数 n n和 m ( n , m ≤ 1000 ) m(n,m≤1000) 输出 出列顺序 以C++的形式回答

```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, m; // 输入n和m的值 cin >> n >> m; // 创建一个包含n个元素的向量,用来表示围坐的人,初始值为1到n vector<int> people; for (int i = 1; i <= n; ++i) { people.push_back(i); } int index = 0; while (!people.empty()) { // 计算要出列的人的索引 index = (index + m - 1) % people.size(); // 输出出列的人的编号 cout << people[index] << " "; // 将出列的人从向量中移除 people.erase(people.begin() + index); } return 0; } ``` [2026-02-07 22:47:16 | AI问答 | 206点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多