分析:
本题可以用队列模拟出列游戏。最初把1~n共n个数依次入队列。每一轮,先执行m-1出队列操作,把队列头结点弹出队列但每次又把队列头结点重新入队列,最后执行1次出队列操作,输出这个队列头结点,但这次队列头结点不再入队列,相当于报数报到m的人出列。重复执行每一轮,直至队列为空
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
queue<int> q;
int n, m;
cin >> n >> m;
for(int i=1;i<=n;i++) q.push(i); //1~n依次入队列
while(q.size()){ //循环直到队列为空
for(int i=1;i<m;i++){ //每一轮前m-1个人又到队列尾排
q.push(q.front());
q.pop();
}
cout << q.front() << " ";
q.pop();
}
return 0;
}