圍圈報數淘汰模擬
n(n<=100)個人圍成一圈按順序編號,從第一人開始報數,凡報到3的人退出圈子,下一個人從1開始報號,
設計算法求解最後推出圈子的成員編號。
/*
n(n<=100)個人圍成一圈按順序編號,從第一人開始報數,凡報到3的人退出圈子,下一個人從1開始報號,
設計算法求解最後推出圈子的成員編號。
*/
#include<stdio.h>
#define N 101
int vis[N];
int main(){
int n,i,cnt=0,num=3;
scanf("%d",&n);
int remain=n;
while(remain){
for(i=1;i<=n;i++){
if(!vis[i]&&++cnt==num){
vis[i]=1;
cnt=0;
remain--;
if(remain==0) printf("%d",i);
}
}
}
return 0;
}