#include <stdio.h>
int main()
{
int Size = 0;
printf("please input num: ");
scanf("%d", &Size);
int yoseph[Size];
int flag = Size; //用来判断是否只剩下最后一人
int i = 0, k = 0; //用来作为循环条件
int count = 0; //用来作为 3人报数循环
//数组赋值
for (i = 0; i < Size; i++)
{
yoseph[i] = i+1;
}
i = 0;
while (flag > 1)
{
flag = 0;
if (yoseph[i] != 0)
{
count++;
if (count == 3) //当报到 3 的时候,将数组元素置为 0
{
yoseph[i] = 0;
count = 0;
}
}
i++;
if (i == Size) //当报到最后的时候 回头重新来
{
i = 0;
}
for (k = 0; k < Size; k++) //判断是否只剩最后一个人
{
if (yoseph[k] != 0)
flag++;
}
}
//输出最后一个人的 number
for (k = 0; k < Size; k++)
{
if (yoseph[k] != 0)
{
printf("the left member is %d\n",yoseph[k]);
break;
}
}
return 0;
}