问题:
围绕着山顶有10个洞,一只兔子和一只狐狸分别住在洞里,狐狸总想吃掉兔子,一天,兔子对狐狸说:你想吃掉我有一个条件,先把洞顺序编号,你从最后一个洞出发,第一次先到第一个洞找我,第二次隔一个洞找我,第三次隔两个洞找我,第四次隔三个洞找我,……依此规律类推,寻找次数不限,我躲在一个洞里不动,只要你找到我,就可以吃掉我。狐狸一想,只有十个洞,次数又不限,哪有找不着的道理,马上答应了条件。结果狐狸跑断了腿也没有找到兔子。请问,兔子躲在哪个洞里?假设狐狸找了1000次。
C语言程序如下:
#include <stdio.h>
#include <math.h>
int main()
{
int i, j, k;
int cave[10] = {1,2,3,4,5,6,7,8,9,10};
int vi;
for(i = 1, j = 1; i <=1000; i++)
{
i f(j > 10)
j = j - 10;
for(k = 0; k <= 9; k++)
{
if(cave[k] == j)
cave[k] = 0;
}
vi = i % 10;
j = j + i +1;
}
printf("Rabbit's cave is:\n");
for(i = 0; i <= 9; i++)
{
if(cave[i] != 0)
printf("%d\t",cave[i]);
}
printf("\n");
getchar();
}
运行结果表明,兔子应该藏在2、4、7、9号洞中。