南沙csp-j/s一对一家教陈老师解题:1334:【例2-3】围圈报数

【题目描述】

有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出列的顺序。

【输入】

nn和mm。

【输出】

出列的顺序。

【输入样例】

4 17

【输出样例】

1 3 4 2

【提示】

n≤100。

#include <bits/stdc++.h>
using namespace std;
int n,m,t;
int main()
{
	cin>>n>>m;
	queue<int> q;
	for(int i=1;i<=n;i++)
		q.push(i);
	while(n--)
	{
		for(int i=1;i<=m;i++)  //重新入队然后最后一个不入队 
		{
			int top=q.front();
			q.pop();
			if(i==m)
				cout<<top<<" ";
			else //最后一个不要再入队 
				q.push(top); 
		}
	}
	return 0;
}

 

posted @ 2024-09-13 20:06  信奥赛老师  阅读(59)  评论(0)    收藏  举报