/*
13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。
*/
#include<stdio.h>
int main()
{
int n=13,m=3; //n人,报到m的出
int cnt=0; //出圈的人数
int i=0,num=0; //i-->人,num-->数
int person[n+1]={0}; //人的状态:0-->还在,1-->已出
printf("The order:");
while(cnt<n){
i++;
if(i>n) i=1; //报完一轮人后,又从第一人开始模拟
if(person[i]==0){ //人未出圈时
num++; //报数
if(num==m){
person[i]=1; //此人出圈
cnt++;
printf("%d ",i);
num=0; //报完一轮数后
}
}
if(cnt==n) printf("\nThe last one is number %d",i);
}
return 0;
}