用Python快速计算三种人民币张数,从日常场景到代码实现

博主:neragonerago 2026-09-17 19:15:13 7

在日常整理零钱、商家盘点营收或者手工核算找零的时候,我们经常会遇到这样的问题:已知总金额和三种常用的人民币面值,需要快速算出每种面值各有多少张,如果依靠手动枚举,不仅耗时耗力,还很容易出错,借助Python的简单循环和逻辑判断,我们可以轻松实现这个功能,几分钟就能得到所有合法的组合结果。

用Python快速计算三种人民币张数,从日常场景到代码实现

明确需求场景

本文会覆盖两种最常见的实用场景:

  1. 已知总金额,枚举所有合法的三种面值张数组合:比如已知总营收38元,只用10元、5元、1元三种纸币(每种至少1张),算出所有可能的张数搭配
  2. 已知总金额+总张数,精准计算三种面值的实际张数:比如清点后发现一共15张纸币,总金额100元,求10元、5元、1元各有多少张

场景一:已知总金额,枚举所有组合

数学模型设定

假设我们使用三种面值分别为d1d2d3(比如10元、5元、1元),对应的张数为abc,那么需要满足:

d1*a + d2*b + d3*c = total_amounta≥1b≥1c≥1(默认每种面值至少有1张)

代码实现思路

我们可以通过两层循环缩小计算范围:

  • 先遍历最大面值的可能张数,减少无效计算
  • 再遍历中间面值的可能张数,最后直接算出最小面值的张数,验证是否符合正整数要求

完整代码示例

def calculate_rmb_combo(total_amount, denomin

The End

发布于:2026-09-17,除非注明,否则均为区块链社区- 欧亿APP下载原创文章,转载请注明出处。