【趣学Python算法100例】出售金鱼

问题描述

小明将养的一缸金鱼分5次出售:第1次卖出全部的一半加1/2条;第2次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4次卖出余下的五分之一加1/5条;最后卖出余下的11条。试编程求出原来鱼缸中共有多少条金鱼。

问题分析

要解这个问题,我们可以设原来鱼缸中有 ( x ) 条金鱼。根据题意,我们可以逐步逆推计算每次出售后的剩余金鱼数量。

  1. 第五次出售前剩余:11 条。
  2. 第四次出售后剩余数量:

设出售前为 ( y ),可以得出:

整理得到:

所以第四次出售前有 14 条。

  1. 第三次出售后剩余数量:

设出售前为 ( z ):

整理得到:

所以第三次出售前有 19 条。

  1. 第二次出售后剩余数量:

设出售前为 ( w ):

整理得到:

所以第二次出售前有 29 条。

  1. 第一次出售后剩余数量:

设出售前为 ( 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条金鱼。

相关推荐
ZhengEnCi2 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
ragnwang2 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
王中阳Go2 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
程序猿DD2 小时前
OctaFuse Gateway 2.18.0:MCP 接入支持 OAuth,供应商粘性绑定可视化管理
后端
weixin_307779133 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
云和数据.ChenGuang3 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
ZhengEnCi4 小时前
Agent 规则管理:让 Memory 做索引、让 Skill 存规则——上下文上限实测与分工方案
后端
nice_lcj5204 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象3275 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp