signed

QiShunwang

“诚信为本、客户至上”

五人捕鱼python

2021/3/21 10:04:48   来源:

五人捕鱼python

  • 题目

题目

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

  • 两个方法都比较笨 但容易理解
i = 1
while True:
    b = (i - 1) * 4 / 5
    c = (b - 1) * 4 / 5
    d = (c - 1) * 4 / 5
    e = (d - 1) * 4 / 5
    # b c d e 分别是B C D E四个人醒来的时候看到的剩下的鱼!
    # 所以应该满足 除以5余1 的条件
    if b % 5 == 1 and c % 5 == 1 and d % 5 == 1 and e % 5 == 1:
    	# 满足条件的 i 就是总数
        print(i)
        break
    i += 1

运行结果

  • 方法2 循环求解
# 估摸着就几千,所以循环设置了10000次,实际到了3121就停下来了,可以考虑递归
for i in range(10000):
	if (i * 5 + 1) % 4 == 0:
        d = (i * 5 + 1) / 4
        if (d * 5 + 1) % 4 == 0:
            c = (d * 5 + 1) / 4
            if (c * 5 + 1) % 4 == 0:
                b = (c * 5 + 1) / 4
                if (b * 5 + 1) % 4 == 0:
                    a = (b * 5 + 1) / 4
                    s = a * 5 + 1
                    print(s)
                    break

运行结果