题目链接:P1996 约瑟夫问题
#include <iostream>
#include <queue>
using namespace std;
int n, m, cnt = 1;
int main() {
queue<int> q;
cin>>n>>m;
for(int i = 1; i <= n; i++)
q.push(i);
while(n) {
if(cnt == m) {
n--; //人数减一
cout<<q.front()<<" ";
q.pop(); //出队
cnt = 1; //从1开始数
}
else {
cnt++;
//放到队尾的位置
int k = q.front();
q.pop();
q.push(k);
}
}
return 0;
}