问题描述
小明将养的一缸金鱼分5次出售:第1次卖出全部的一半加1/2条;第2次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4次卖出余下的五分之一加1/5条;最后卖出余下的11条。试编程求出原来鱼缸中共有多少条金鱼。
问题分析
要解这个问题,我们可以设原来鱼缸中有 ( x ) 条金鱼。根据题意,我们可以逐步逆推计算每次出售后的剩余金鱼数量。
- 第五次出售前剩余:11 条。
- 第四次出售后剩余数量:
设出售前为 ( y ),可以得出:
整理得到:
所以第四次出售前有 14 条。
- 第三次出售后剩余数量:
设出售前为 ( z ):
整理得到:
所以第三次出售前有 19 条。
- 第二次出售后剩余数量:
设出售前为 ( w ):
整理得到:
所以第二次出售前有 29 条。
- 第一次出售后剩余数量:
设出售前为 ( v ):
整理得到:
最终,原来鱼缸中共有 59 条金鱼。
完整的程序
根据上面的分析,编写程序如下:
python
def calculate_fish():
# 从最后一步推回去
remaining = 11 # 第五次出售后的剩余金鱼数量
# 第四次出售
fourth_before = (remaining + 1 / 5) * 5 / 4
# 第三次出售
third_before = (fourth_before + 1 / 4) * 4 / 3
# 第二次出售
second_before = (third_before + 1 / 3) * 3 / 2
# 第一次出售
first_before = (second_before + 1 / 2) * 2
return int(first_before)
# 计算原来金鱼的数量
original_fish_count = calculate_fish()
print("原来鱼缸中共有多少条金鱼:", original_fish_count)
运行结果
在vscode下运行程序,结果如下图所示。由输出结果可知,原来鱼缸中共有59条金鱼。