标题:猴子分香蕉
内容:5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
注意:需要提交的是一个整数,不要填写任何多余的内容。
分析:
通过程序暴力破解,即可得知答案。
代码实现:
int a = 0, b = 0, c = 0, d = 0, e = 0;
int x;
for (x = 0; x < 10000; x++)
{
a = (int)(x / 5); //第一只猴子藏起来的a
if (x % 5 == 1)
{
b = (int)(4 * a / 5);//第二只猴子藏起来的b
if ((4 * a) % 5 == 2)
{
c = (int)(4 * b / 5);//第三只猴子藏起来的c
if ((4 * b) % 5 == 3)
{
d = (int)(4 * c / 5);//第四只猴子藏起来的d
if ((4 * c) % 5 == 4)
{
e = (int)(4 * d / 5);//第五只猴子没藏
if ((4 * d) % 5 == 0)
{
if (a + 1 + b + 2 + c + 3 + d + 4 + 4 * d == x&&d!=0)
{
printf("a%d b%d c%d d%d e%d x%d\n", a, b, c, d, e, x);
}
}
}
}
}
}
}
运行结果:
答案为3141,因为第一个不符合题意。