北京住总第一开发建设有限公司网站首页,wordpress 网页位置,怎样做公众号,做网站定位题目#xff1a; Description
n 个人围成一圈#xff0c;从第一个人开始报数,数到 m 的人出列#xff0c;再由下一个人重新从 1 开始报数#xff0c;数到m 的人再出圈#xff0c;依次类推#xff0c;直到所有的人都出圈#xff0c;请输出依次出圈人的编号。
注意…题目 Description
n 个人围成一圈从第一个人开始报数,数到 m 的人出列再由下一个人重新从 1 开始报数数到m 的人再出圈依次类推直到所有的人都出圈请输出依次出圈人的编号。
注意本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n−1 名小朋友而该题是全部出圈。
Input
输入两个整数 n,m。
Output
输出一行n 个整数按顺序输出每个出圈人的编号。
Sample 1 Inputcopy Outputcopy 10 3 3 6 9 2 7 1 8 5 10 4
Hint
≤1001≤m,n≤100
解题思路
用STL容器的queue队列来写 一个一个的报数可以想象成一个队列一个人报完数后判断他所报的数是不是出局的数如果是直接弹出但若不是将其移动至队尾。我们使用一个队列之前需要加上头文件queue
代码如下
#includebits/stdc.h
#includequeue
using namespace std;
int main()
{int n, m, nowNum 1;cin n m;queueint q;for(int i 1; i n; i) q.push(i); //初始化队列while(!q.empty()) //在队列不为空时继续{if(nowNum m){cout q.front ; //打印出局的人的编号q.pop(); //出局nowNum 1; //初始化现在的数字}else{nowNum;q.push(q.front()); //排至队尾q.pop();}}cout endl;return 0;
}