最新消息:

渔夫分鱼的故事(Python)

Python 少儿编程 2071浏览 0评论

渔夫分鱼的故事(Python)

下面我们用Python语言来解决这个问题。

 通过鱼的分法,我们可以知道,A/B/C/D/E 5个渔夫所分得的鱼的数量是互相关联的。假设最有一个渔夫E,分得的鱼的数量是x,那么就可以推理出来E分鱼前鱼的数量是5x+1; 而D所分得的鱼的数量就是(5x+1)/4;同理可以推得D分鱼前鱼的数量是5((5x+1)/4)+1;沿着这个思路,我们可以一直推到A分鱼前的鱼的数量。推导示意如下图:

渔夫分鱼的故事(Python)

A、B、C的我们就不列出来了,还是交给Python比较好处理一点。

我们假设x=1,也即最后一名渔夫只拿走了一条鱼,来试试看结果:

x = 1

total = 5*x + 1

for i in range(4):

total = total/4*5 + 1

 

print(‘鱼的总数量为:’ ,total)

得出结果,鱼的总数量为: 20.4140625

这个结果是不对的,题目告诉我们,鱼是整条分的。所以,我们假设的x的数量为1不成立。那这样,就多试几次x的值吧。完善程序如下:

for x in range(1,1000):

total = 5*x + 1

for i in range(4):

total = total/4*5 + 1

if total == int(total):

break

 

print(‘鱼的总数量为:’ ,total)

这里total代表鱼的总数,total == int(total),可以得到一个整数的total。

执行这个程序,得到结果如下:

鱼的总数量为: 3121.0

ok,这就是我们想要的结果。

您必须 登录 才能发表评论!