题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int a[100];
//编号
for (int i = 0; i < n; ++i)
{
a[i] = i + 1;
}
int cnt = n;//未淘汰人数
int i = 0;//每轮第几个
int num = 0;//报数
while (cnt > 1)
{
if (a[i] != 0)
{
num++;
if (num == 3)
{
a[i] = 0;
num = 0;
cnt--;
}
}
i++;
//从头报数
if (i == n)
{
i = 0;
}
}
//打印结果
for (int i = 0; i < n; ++i)
{
if (a[i] != 0)
{
printf("最后留下的是:%d\n", a[i]);
}
}
return 0;
}
8
最后留下的是:7