場合の数の支払える金額の問題をPythonで解いてみました。(^_^;
次の硬貨を全部または一部を使って、ちょうど支払うことができる金額は何通りあるか。
(1)10円硬貨5枚、100円硬貨3枚、500円硬貨3枚
(2)10円硬貨2枚、50円硬貨3枚、100硬貨4枚
既出でないものをリストに記録していって0の場合を除いてカウントしました。
● Coins1.py
# coding: UTF-8 # Coins1.py from time import time def main(): tm=time() # Timer Start ls = [] for x in range(5+1): for y in range(3+1): for z in range(3+1): s = 10*x+100*y+500*z if s not in ls: ls.append(s) print("(1) %d"%(len(ls)-1)) # 0の場合を除く ## print(sorted(ls)) ls = [] for x in range(2+1): for y in range(3+1): for z in range(4+1): s = 10*x+50*y+100*z if s not in ls: ls.append(s) print("(2) %d"%(len(ls)-1)) # 0の場合を除く ## print(sorted(ls)) print("Runtime : %.3f [sec]"%(time()-tm)) # Timer Stop & Disp if __name__ == '__main__': main()
●実行結果
(1) 95 (2) 35 Runtime : 0.000 [sec]
※参考URL
●[PDF]支払える金額