You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用%与//运算符实现纸币找零计算器的技术问询

纸币找零计算器实现方案

嘿,看你在做找零计算器的编程作业,先给你梳理下思路,再把你的伪代码优化下,顺便给个可运行的示例参考~

先明确需求:输入金额(比如348美元),输出对应的纸币组合,像$100 $100 $100 $20 $20 $5 $2 $1这样。

优化后的伪代码

你的思路方向是对的,不过可以把逻辑捋得更清晰,避免不必要的重复计数操作:

# 伪代码
1. 提示用户输入需要找零的金额(确保是正整数)
2. 定义按从大到小排序的面额列表:[100, 50, 20, 10, 5, 2, 1]
3. 初始化空列表,用于存储最终的纸币面额
4. 遍历每个面额:
    a. 计算当前面额可使用的张数:count = 当前剩余金额 // 面额
    b. 如果count > 0:
        i. 将该面额重复count次,添加到结果列表中
        ii. 更新剩余金额:剩余金额 = 剩余金额 % 面额
5. 给结果列表中的每个面额加上$符号,拼接成空格分隔的字符串输出

示例代码(Python)

如果用Python实现,代码可以直接满足你的输出要求:

# 获取用户输入
amount = int(input("初始金额(美元):"))

# 定义面额顺序
denominations = [100, 50, 20, 10, 5, 2, 1]
change = []

# 计算找零组合
for bill in denominations:
    count = amount // bill
    if count > 0:
        change.extend([bill] * count)
        amount = amount % bill

# 格式化输出
print(" ".join(f"${b}" for b in change))

测试输入348的话,输出就是$100 $100 $100 $20 $20 $5 $2 $1,完全符合示例要求~

小提示

  • 可以加个输入验证逻辑,处理用户输入非整数、负数的情况,让程序更健壮
  • 美元面额刚好适合贪心算法(从大到小取),能保证用最少的纸币张数完成找零;如果换成不满足贪心特性的面额,就需要用动态规划来实现了

内容的提问来源于stack exchange,提问作者Jim421616

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:32:42