友情提示:380元/半年,儿童学编程,就上码丁实验室。
下面我们用Python语言来解决这个问题。
通过鱼的分法,我们可以知道,A/B/C/D/E 5个渔夫所分得的鱼的数量是互相关联的。假设最有一个渔夫E,分得的鱼的数量是x,那么就可以推理出来E分鱼前鱼的数量是5x+1; 而D所分得的鱼的数量就是(5x+1)/4;同理可以推得D分鱼前鱼的数量是5((5x+1)/4)+1;沿着这个思路,我们可以一直推到A分鱼前的鱼的数量。推导示意如下图:
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,这就是我们想要的结果。