A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。
C、D、E依次醒来,也按同样的方法拿鱼。
问他们至少捕了多少条鱼?
代码实现:让鱼的总数 fish 从 1 开始递增,当 fish 的数量可以满足无论分鱼分配规则,那么这个 fish 值就是合伙捕鱼的最小值。
def main(): fish = 1 while True: total, enough = fish, True for _ in range(5): if (total - 1) % 5 == 0: total = (total - 1) // 5 * 4 else: enough = False break if enough: print(f'总共有{fish}条鱼') break fish += 1 if __name__ == '__main__': main()
也可以用递归函数:
def need(n , r): if n % 5 == 1: if r == 5: return True else: return need(n - (n - 1) / 5 -1, r + 1) else: return False n = 6 while True: if need(n,1): break else: n = n + 5 print(n)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)