場合の数の支払える金額の問題をPythonで解いてみた。

 場合の数の支払える金額の問題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]支払える金額