已知 n 个人(以编号1, 2, 3 ,4, 5 ,6 ... .. .n)围坐一张圆桌周围。从编号为k 的人开始报数,数到m 的那个人出列;他的下一个人又从 1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列,使用queue队列能够节省大量的时间和内存,而且代码简单,易上手。
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
queue<int>q;
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
q.push(i);
for(int i=1;i<=n;i++)
{
for(int j=1;j<m;j++){
q.push(q.front());
q.pop();
}
printf("%d ",q.front());
q.pop();
}
return 0;
}