题目描述:
把一张一元的钞票换成一分、两分、和五分的硬币,每种硬币至少一枚。问有哪几种换法?
列出所有的方案,一行内输出一种方案,每种方案的三个数之前用一个空格隔开。
以下是本人的代码,不知道对错,我最终算出来是461种换法,谁可以帮忙鉴别一下对错
num = 0
for i in range(1,100//5+1):
for j in range(1,100//2+1):
z = 100 - (i*5 + j*2)
if i * 5 + j * 2 + z == 100 and z > 0:
print(i, j, z)
num += 1
print(num)
可以用列表推导式一行搞定:
result = [[i,j,k] for i in range(1,100//5+1) for j in range(1,100//2+1) for k in range(1,100+1) if i * 5 + j * 2 + k == 100]
for r in result: print(*r)
print(len(result))
对,简化一下:
num = 0
for i in range(1,100//5):
for j in range(1,100//2):
z = 100 - (i*5 + j*2)
if z > 0:
print(i, j, z)
num += 1
print(num)
完全正确的,思路也正确
求关注