一、问题描述
5 只猴子分香蕉。
第1只猴子,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来。
第2只猴子,把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来。
第3只猴子,把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来。
第4只猴子,把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来。
第5只猴子,把香蕉均分成5堆,此时正好不剩。
请计算一开始最少有多少个香蕉?
二、代码实现
计算思路就是 每只猴子分完后每堆数量 都是整数 且 第五只猴子分完后 每堆数量大于0
for (let a = 6; ; a++) {
const b = (a - 1) / 5 //第一只猴子分完后每堆数量
const c = (4 * b - 2) / 5 //第二只猴子分完后每堆数量
const d = (4 * c - 3) / 5 //第三只猴子分完后每堆数量
const e = (4 * d - 4) / 5 //第四只猴子分完后每堆数量
const f = (4 * e) / 5 //第五只猴子分完后每堆数量
//每只猴子分完后每堆数量 都是整数 且 第五只猴子分完后每堆数量大于0
if (f > 0 && b % 1 === 0 && c % 1 === 0 && d % 1 === 0 && e % 1 === 0 && f % 1 === 0) {
console.log(`最少有${a}个香蕉`);
break
}
}