JS算法——猴子分香蕉

一、问题描述

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
  }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值