根据队列queue的性质,先进先出,我们可以考虑,先压入所有的人,然后把第一个人压入最后,然后弹出最后一个人,直到第k-1个人,我们结束循环,然后输出第k个人,然后又继续从k+1个人进行循环,代码如下。
#include<bits/stdc++.h>
using namespace std;
queue<int> x;
int main()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
x.push(i);
}
while (!x.empty())
{
for(int i=1;i<=k-1;i++)
{
x.push(x.front());
x.pop();
}
cout<<x.front()<<" ";
x.pop();
}
return 0;
}