猴子分香蕉
5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
#include <iostream>
#include <limits.h>
using namespace std;
//func : 模拟猴子分桃 成功返回1 失败返回0
//x : 桃子个数
int func(int x){
for(int i=1;i<5;i++)
{
if(x%5==i)
{
//细节 : 猴子是先吃桃子,然后在拿掉自己的五分之一
//x=x-i;
//x=x-(x/5);
//解释 : 先吃桃子 在乘五分之四
x=(x-i)*4/5;
}else{
return 0;
}
}
//细节 : x>=5
if(x%5==0&&x>=5) return 1;
return 0;
}
int main(){
//num : 桃子个数
int num=5;
//INT_MAX : 整数极限
for(int i=1;i<INT_MAX;i++)
{
if(func(i))
{
cout<<i;
break;
}
}
}
结果 3141