题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……以此类推,直到所有的人都出圈,请依次输出出圈人的编号。
输入描述
n m(m,n≤100)
输出描述
出圈的编号。
样例1
输入复制
10 3
输出
3 6 9 2 7 1 8 5 10 4
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
queue <int> q;
int n, m;
scanf("%d %d", &n, &m);
for(int i=1;i<=n;i++) q.push(i);
int cnt = 0;
while(!q.empty()){
cnt++;
if(cnt == m){
printf("%d ", q.front());
q.pop();
cnt = 0;
}else{
q.push(q.front());
q.pop();
}
}
return 0;
}