题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
代码
//题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
///凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
#include<stdio.h>
#include<string.h>
int main(){
int a[1000]={0},n,t,count;
// n 人参与游戏
//a[i]=1;表示已经被淘汰
//t表示游戏过程中正在参与游戏的人数
//count表示报数数值
int i,j;
count=1;
printf("输入这轮游戏的人数:");
scanf("%d",&n);
t=n;//最开始,所有人都参与游戏
while(1){
for(i=1;i<=n;i++){
if(!a[i]){//如果这人没出局就报数
if(t==1)//如果参与游戏的人只剩下一个人,输出下标,且跳出循环
{
printf("\n未淘汰的人的最开始下标是%d",i);
return 0;
}
if(count==3){//数到第三个就可以标记为1,即出局
count=0;a[i]=1;
t--;//参与游戏的人数-1
}
// printf("count=%d a[%d]=%d\n",count,i,a[i]);//可以输出游戏的过程
count++;
}
}
}
return 0;
}