将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 输入格式: 输入在一行中给出待换的零钱数额x∈(8,100)。 输出格式: 要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
时间: 2023-05-25 15:03:55 浏览: 72
编写程序,输出用一元人民币兑换成1分、2分和5分硬币共有多少种兑换方法。
```python
# 数值
x = int(input())
# 统计数量
cnt = 0
# 枚举每一种硬币的数量
for i in range(1, x//5):
for j in range(1, (x-5*i)//2):
k = x - 5*i - 2*j
# 满足条件则输出
if k >= 1:
cnt += 1
print("fen5:{}, fen2:{}, fen1:{}, total:{}".format(i, j, k, i+j+k))
# 输出总数
print("count = {}".format(cnt))
```
注:上面的代码只是一个参考,实际上这个问题可以使用“生成函数”来解决,其时间复杂度为O(x)。
阅读全文