將一筆零錢換成5分、2分和1分的硬幣,要求每種硬幣至少有一枚,有幾種不同的換法?
輸入格式:
輸入在一行中給出待換的零錢數額。
輸出格式:
要求按5分、2分和1分硬幣的數量依次從大到小的順序,輸出各種換法。每行輸出一種換法,格式為:“fen5:5分硬幣數量, fen2:2分硬幣數量, fen1:1分硬幣數量, total:硬幣總數量”。最后一行輸出“count = 換法個數”。
輸入樣例:
13
輸出樣例:
fen5:2, fen2:1, fen1:1, total:4 fen5:1, fen2:3, fen1:2, total:6 fen5:1, fen2:2, fen1:4, total:7 fen5:1, fen2:1, fen1:6, total:8 count = 4
代碼如下:
#!/usr/bin/python # -*- coding: utf-8 -*- n = int(input()) a,b,c = 5,2,1 count = 0 for fen5 in range(n//5,0,-1): for fen2 in range(n//2,0,-1): for fen1 in range(n,0,-1): if a*fen5 +b*fen2 + c*fen1 == n : count += 1 print("fen5:{:d}, fen2:{:d}, fen1:{:d}, total:{:d}".format(fen5,fen2,fen1,fen5+fen2+fen1)) print("count =",count)
這個程序不難,參考以前的進行了修正。
原文鏈接:https://www.cnblogs.com/Renqy/p/12740786.html
讀書和健身總有一個在路上