题目描述
【题目描述】
有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出列的顺序。
【输入】
n和m。
【输出】
出列的顺序。
样例
【输入样例】
4 17
【输出样例】
1 3 4 2
这道题可以用队列做,用一个双重循环,里面的循环就重复一个操作,把第一个数放到队尾,循环结束后输出开头的数
(注意内循环是循环到m-1)
C++ 代码
#include<bits/stdc++.h>
using namespace std;
queue<int> a;
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
a.push(i);
}
for(int i=0;i<n;i++){
for(int j=0;j<m-1;j++){
a.push(a.front());
a.pop();
}
cout<<a.front()<<" ";
a.pop();
}
return 0;
}