题目描述
N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;……输出依次出圈的人的编号。N,M由键盘输入。
输入
一行,包含两个正整数N,M。1<=N,M<=100。
输出
先输出一个空行,再依次出圈的人的编号。每个编号后都有一个空格。
样例输入
8 5
样例输出
5 2 8 7 1 4 6 3
代码实现:
while循环实现假循环出链表,i输出,置0数组标记出队与否,置0计数器计算当前位置
#include<iostream>
using namespace std;
int main(){
int N,M;
cin>>N>>M;
int num=0;
int s[N+1];
for(int i=1;i<=N;i++){
s[i]=1;
}
cout<<endl;
int sign=0;
while(sign!=N){
for(int i=1;i<=N;i++){
if(s[i]){
num++;
if(num==M){
cout<<i<<" ";
num=0;
s[i]=0;
sign++;
}
}
}
}
}