用Python快速计算三种人民币张数,从日常场景到代码实现
在日常整理零钱、商家盘点营收或者手工核算找零的时候,我们经常会遇到这样的问题:已知总金额和三种常用的人民币面值,需要快速算出每种面值各有多少张,如果依靠手动枚举,不仅耗时耗力,还很容易出错,借助Python的简单循环和逻辑判断,我们可以轻松实现这个功能,几分钟就能得到所有合法的组合结果。
明确需求场景
本文会覆盖两种最常见的实用场景:
- 已知总金额,枚举所有合法的三种面值张数组合:比如已知总营收38元,只用10元、5元、1元三种纸币(每种至少1张),算出所有可能的张数搭配
- 已知总金额+总张数,精准计算三种面值的实际张数:比如清点后发现一共15张纸币,总金额100元,求10元、5元、1元各有多少张
场景一:已知总金额,枚举所有组合
数学模型设定
假设我们使用三种面值分别为d1、d2、d3(比如10元、5元、1元),对应的张数为a、b、c,那么需要满足:
d1*a + d2*b + d3*c = total_amount且a≥1、b≥1、c≥1(默认每种面值至少有1张)
代码实现思路
我们可以通过两层循环缩小计算范围:
- 先遍历最大面值的可能张数,减少无效计算
- 再遍历中间面值的可能张数,最后直接算出最小面值的张数,验证是否符合正整数要求
完整代码示例
def calculate_rmb_combo(total_amount, denomin
The End
发布于:2026-09-17,除非注明,否则均为原创文章,转载请注明出处。

