Python五人分鱼

题目链接:五人分鱼

题目描述

A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份;B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份;C、D、E依次醒来,也按同样的方法拿鱼。

问他们至少捕了多少条鱼?

分析

1、直接暴力查最少捕获鱼的数量,题目链接有代码。

2、查最后一个人拿到鱼的数量,假设该数量为fish,该数量要可以满足4次 (fish * 5 + 1) % 4 == 0; fish /= 4。

代码

def main():
    fish = 1
    while True:
        flag = 0
        tfish = fish  #最后一个人拿到的鱼
        for _ in range(5):
            fish = fish * 5 + 1  #前面人拿掉1/5剩下的鱼
            if fish % 4 == 0:
                flag += 1
                fish /= 4  #前面人拿到的鱼
                continue
            else:
                break
        if flag == 4:
            break
        else:
            fish = tfish + 1  #不行就第五个人再多拿一条鱼重试
    print(f"至少捕获了{int(fish)}条鱼。")

if __name__ == '__main__':
    main()

 

相关推荐
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页