思路(约瑟夫问题模板):
每个人排队报数,如果报的数是m,出队列,如果不是,重新去队尾排队。
#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int main()
{
int n,m; cin >> n>>m;
for (int i = 1; i <= n; i++)q.push(i);
int num_now=1;
while (!q.empty()) {
if (num_now == m) {
cout << q.front() << ' ';
q.pop();//出队列
num_now = 1;//重新计数
}
else {
num_now++;//计数++
q.push(q.front());//重新排队
q.pop();//重新排队
}
}
return 0;
}