【题目描述】
N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。
【输入】
输入N和M。
【输出】
输出一行,依次出圈的人的编号。
【输入样例】
8 5
【输出样例】
5 2 8 7 1 4 6 3
【提示】
【数据范围】
对于所有数据,2≤N,M≤1000。
C++:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
int a[10001];
int count=0; //用来计数是否数到m,每数到m的人就出圈
int cnt=0; //表示出圈的人数
cin>>n>>m;
for(int i=1;i<=n;i++)
a[i]=i; //用数组的下标来表示每个人的编号
while(cnt!=n) //只有当全部人出圈的时候才结束
{
for(int j=1;j<=n;j++) //遍历寻找出圈的人
{
if(a[j]!=0)
count++;
if(count==m)
{
cout<<a[j]<<" "; //输出满足出圈人的编号
a[j]=0; //出圈后的人编号赋值为0代表已出圈不再参与遍历
count=0; //有人出圈后再次初始化
cnt++; //出圈人数加一
}
}
}
}