题目描述:
5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
这是好像是某届蓝桥杯大赛中的一道填空题!
这里我用的是暴力法!简单粗暴!就是一次一次的试,直到满足题目要求的条件为止!
#include <stdio.h>
int main()
{
int i=6;//要分5次所以从6开始计算
while(true)
{
if(i%5==1)//第一次分会多出一个
{
int x1=i-(i-1)/5;//第一次均分后 都会少一份被拿走
x1=x1-1;//对了,不能忘记每次多出来的香蕉也被醒过来的猴子偷吃了
if(x1%5==2)
{
int x2=x1-(x1-2)/5;
x2=x2-2;
if(x2%5==3)
{
int x3=x2-(x2-3)/5;
x3=x3-3;
if(x3%5==4)
{
int x4=x3-(x3-4)/5;
x4=x4-4;
if(x4%5==0 && x4!=0)//要确保到最后一个猴子醒过来的时候还有香蕉!且正好可以被均分
{
printf("%d \n",i);
break;
}
}
}
}
}
i++;
}
return 0;
}
运行结果:3141