"""练习 8:用面值 100、50、20、10、5、1 的硬币找零。 输入一个非负整数金额;此面值组合下按从大到小取币。 学习说明: - 输入金额后先检查是否为负数;负数不符合题意。 - remaining 表示还没有找出的金额;按硬币从大到小处理。 - divmod(remaining, denomination) 返回商和余数:商是该面值所需枚数,余数留给下一面值。 - total_coins 累加所有枚数。这里的硬币面值组合支持该贪心策略。 """ amount = int(input()) if amount < 0: print("amount must be non-negative") else: remaining = amount total_coins = 0 for denomination in (100, 50, 20, 10, 5, 1): count, remaining = divmod(remaining, denomination) print(denomination, count) total_coins += count print("total:", total_coins)