#include<stdio.h>
int main()
{
int m,n,k,i,a[55];
int *p;
p=a;
scanf("%d",&n);
for(i=0; i<n; i++)
{
*(p+i)=i+1;//以1到n为序给每个人编号
}
m=0;//m为退出人数
k=0;//k为按1,2,3报数时的计数变量
i=0;//i为每次循环计数变量
while(m<n-1)//当退出人数比n-1少时执行循环体
{
if(*(p+i)!=0) k++;
if(k==3)
{
m++;
k=0;
*(p+i)=0; //对退出的人编号为0
}
i++;
if(i==n) i=0;//报数到末尾后,i回复为0
}
while(*p==0)
p++; //当*p为0的时候,使p++进行下一位
printf("%d\n",*p);
return 0;
}
有n个人围成一圈,顺序排号。 从第1个人开始报数(从1到3报数), 凡报到3的人推出圈子, 问最后留下的是原来第几号的人。
最新推荐文章于 2023-02-16 10:14:38 发布