Python:输入正整数n,计算n元人民币兑换成一元二元五元的所有组合,要求三种纸币都存在,输出每一种组合及总组合数,用for循环
时间: 2024-10-14 15:15:45 浏览: 20
python 输入两个正整数计算最大公约数和最小公倍数 示例
5星 · 资源好评率100%
在Python中,你可以使用嵌套的`for`循环以及列表推导式来解决这个问题。这里是一个示例程序:
```python
def calculate_combinations(n):
# 创建一个列表,存储所有可能的组合,初始值为0
combinations = [[0 for _ in range(3)] for _ in range(n+1)]
# 初始化变量
five_yuan = 0
two_yuan = 0
one_yuan = n
# 遍历5元、2元和1元的组合
for five in range(min(five_yuan + 1, n // 5) + 1): # 取最小值保证5元存在
for two in range(min(two_yuan + (n - 5 * five) // 2, n - 5 * five)): # 保证2元也存在
# 计算剩余的一元硬币数量
remaining_one_yuan = n - 5 * five - 2 * two
# 如果剩余的一元足够,则添加到组合列表中
if remaining_one_yuan >= 0:
combinations[one_yuan - remaining_one_yuan][0] += 1 # 一元的数量
combinations[one_yuan - remaining_one_yuan][1] += two # 两元的数量
combinations[one_yuan - remaining_one_yuan][2] += five # 五元的数量
# 更新剩余的硬币数量计数器
five_yuan = five
two_yuan = two
one_yuan -= remaining_one_yuan
return combinations
# 输入示例
n = int(input("请输入正整数n:"))
result = calculate_combinations(n)
print("总组合数:", len(result))
# 输出每种组合
for i, combination in enumerate(result):
print("组合{}: 1元={}, 2元={}, 5元={}".format(i+1, combination[0], combination[1], combination[2]))
阅读全文