Python 3.x中用if-else语句计算最小纸币数量求助
用Python实现最少卢比纸币找零(if-else版)
要得到最少数量的纸币,核心思路是贪心算法:优先使用面额大的纸币,依次向下处理。以下是完全用if-else语句实现的代码:
# 读取输入金额 amount = int(input("请输入金额A:")) # 初始化各面额纸币数量 hundred = 0 fifty = 0 ten = 0 one = 0 remaining = amount # 计算100卢比纸币数量 if remaining >= 100: hundred = remaining // 100 remaining = remaining % 100 else: hundred = 0 # 计算50卢比纸币数量 if remaining >= 50: fifty = 1 remaining -= 50 else: fifty = 0 # 计算10卢比纸币数量 if remaining >= 10: ten = remaining // 10 remaining = remaining % 10 else: ten = 0 # 剩余金额全部用1卢比纸币 one = remaining # 输出结果 print(f"100卢比:{hundred}张") print(f"50卢比:{fifty}张") print(f"10卢比:{ten}张") print(f"1卢比:{one}张")
代码说明
- 先读取输入的金额并转为整数(假设输入为整数金额)
- 用
remaining变量跟踪剩余未处理的金额 - 对每个面额,用if-else判断剩余金额是否足够使用该面额:
- 100卢比:计算能整除的数量,直接取商,剩余金额取余数
- 50卢比:剩余金额最多99,因此最多使用1张
- 10卢比:计算整除的数量,剩余金额取余数
- 最后剩下的金额全部用1卢比纸币
示例输入267的输出:
100卢比:2张
50卢比:1张
10卢比:1张
1卢比:7张
总纸币数为11张,是最少的组合数量。
内容的提问来源于stack exchange,提问作者Mourya
相关产品推荐
相关产品推荐

