第二题:猴子分香蕉
题目描述
5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!

请计算一开始最少有多少个香蕉。

需要提交的是一个整数,不要填写任何多余的内容。

## 模拟,思路在代码注释中

# 猴子分香蕉
# 只有形如5x+1的值才可能为答案
ans = 6
while True:
    n = ans
    # 如果有一步不满足(n - i) % 5 == 0, ans直接加5
    flag = True
    for i in range(1, 5):
        if (n - i) % 5 == 0:
            n = (n - i) * 0.8
        else:
            flag = False
            break
    if flag:
        # 0 % 5 = 0 分到第5只猴子时没香蕉了 不符合题意,需要特判一下
        if n % 5 == 0 and n != 0:
            print(ans)
            break
    ans += 5



答案:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐