mirror of
https://github.com/correl/euler.git
synced 2024-11-23 19:19:53 +00:00
Merge branch '031'
This commit is contained in:
commit
65719721c9
1 changed files with 30 additions and 0 deletions
30
e031.py
Normal file
30
e031.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
In England the currency is made up of pound, £, and pence, p, and there are
|
||||
eight coins in general circulation:
|
||||
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
|
||||
|
||||
It is possible to make £2 in the following way:
|
||||
1£1 + 150p + 220p + 15p + 12p + 31p
|
||||
|
||||
How many different ways can £2 be made using any number of coins?
|
||||
"""
|
||||
|
||||
def combinations(amount, denominations):
|
||||
total = 0
|
||||
if not denominations:
|
||||
return total
|
||||
denominations = sorted(denominations, reverse=True)
|
||||
for i in range(len(denominations)):
|
||||
d = denominations[i]
|
||||
n = 1
|
||||
while d * n <= amount:
|
||||
if d * n == amount:
|
||||
total += 1
|
||||
total += combinations(amount - (d * n), denominations[i+1:])
|
||||
n += 1
|
||||
return total
|
||||
|
||||
if __name__ == '__main__':
|
||||
coins = [200, 100, 50, 20, 10, 5, 2, 1]
|
||||
print combinations(200, coins)
|
Loading…
Reference in a new issue