作者在 2015-12-29 10:20:05 发布以下内容
犹太人有这样的故事:罗马人占领乔塔帕特后,39个犹太人与约瑟夫及他的朋友躲到一个洞里,犹太人决定宁愿死也不要被敌人逮到,于是决定了一个自杀方式,41个人排成一个圈,由第1个人开始报数,每报数到第3个,该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
现在假设您不幸参与了这个游戏,共有N个人,如何让自己成为最后一个报数者,成功逃生。假设有41个人,您需要排在多少位才能逃生。
代码如下:
#include <stdio.h>
#define N 41 //也可以通过scanf函数赋值
int main()
{
int j=0,k=0;
int a[N]; //定义数组,并为每个人生命值赋为1
for(int i=0;i<41;i++)
{
a[i]=1;
}
i=0;
while(k<N-1) //当自杀人数到N-1时退出
{
if(a[i]==1)
{
j++;
if(j%3==0) //报数为3的人自杀
{
a[i]=0;
k++; //统计已经自杀的人数
}
}
i++;
if(i==N+1)
i=0;
}
for(i=0;i<41;i++) //找出最后一个人的位置
{
if(a[i]==1)
printf("你应该站在第%d人的位置",i+1);
}
return 0;
}