N个人围成一圈,
从第一个人开始报数,数到M的人开始出圈。
再由下一个人重新报数,数到M的人出圈。
输出依次出圈的人的原始编号。
N和M由键盘输入。
#include <iostream>
using namespace std;
bool a[110];
int main(){
int n,m;
cin >>n >>m;//全部n个人,报到m出圈
cout << endl;
for(int i=1;i<=100;++i) a[i]=false;//全部赋值false,代表在圈内
int f=0;//出圈人数
int t=0;//圈内每个元素的下标
int s=0;//报数
do{
++t;
if(t==n+1)t=1;//当t超过n时,t回到1,数组模拟成环状
if(a[t]==false) ++s;//模拟报数
if(s==m) { //当第m个人报数
s=0;
cout << t << " " ;//输出出圈的人的编号
a[t] = true;//给他出圈的标志,true
++f;//出圈的人数增加
}
}while(f!=n);
}