View Code of Problem 80

#include<stdio.h>
void main(){
	int n,num[100],*p;
	int i,k,m;
	while(scanf("%d",&n)!=EOF){
		if(n==0)
			break;
		p=num;//p指针指向num
		for(i=0;i<n;i++)
			*(p+i)=i+1;//定义每个人是第几人
		i=0;
		k=0;//k为三时这个人退出圈子
		m=0;//统计多少人退出圈子,最多为n-1个
		while(m<n-1){
			if(*(p+i)!=0)//判断这个号是否出局
				k++;
			if(k==3){
				*(p+i)=0;
				k=0;
				m++;//出局人数计数器+1
			}
			i++;
			if(i==n)
				i=0;//指针移到尾部,则返回到头部
		}
		while(*p==0)
			p++;
		printf("%d\n",*p);
	}
}

Double click to view unformatted code.


Back to problem 80