diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2024-09-09 15:10:21 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2024-09-09 15:10:21 +0800 |
| commit | 90e81fa7a4d4ba2eb482542cde3401f8c166adc7 (patch) | |
| tree | 32574bfed25f9181a5281395f5dc3dd0321e0de4 /challenge-285/paulo-custodio/python/ch-2.py | |
| parent | d7a3db86265e08657df10663e50d63d87d6695d1 (diff) | |
| parent | 3c67a5382758155040d6598a2fa01ca5fd6d25d9 (diff) | |
| download | perlweeklychallenge-club-90e81fa7a4d4ba2eb482542cde3401f8c166adc7.tar.gz perlweeklychallenge-club-90e81fa7a4d4ba2eb482542cde3401f8c166adc7.tar.bz2 perlweeklychallenge-club-90e81fa7a4d4ba2eb482542cde3401f8c166adc7.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-285/paulo-custodio/python/ch-2.py')
| -rw-r--r-- | challenge-285/paulo-custodio/python/ch-2.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/challenge-285/paulo-custodio/python/ch-2.py b/challenge-285/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..9ebd768aa6 --- /dev/null +++ b/challenge-285/paulo-custodio/python/ch-2.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Challenge 285 +# +# Task 2: Making Change +# Submitted by: David Ferrone +# +# Compute the number of ways to make change for given amount in cents. By using +# the coins e.g. Penny, Nickel, Dime, Quarter and Half-dollar, in how many +# distinct ways can the total value equal to the given amount? Order of coin +# selection does not matter. +# +# A penny (P) is equal to 1 cent. +# A nickel (N) is equal to 5 cents. +# A dime (D) is equal to 10 cents. +# A quarter (Q) is equal to 25 cents. +# A half-dollar (HD) is equal to 50 cents. +# +# Example 1 +# +# Input: $amount = 9 +# Ouput: 2 +# +# 1: 9P +# 2: N + 4P +# +# Example 2 +# +# Input: $amount = 15 +# Ouput: 6 +# +# 1: D + 5P +# 2: D + N +# 3: 3N +# 4: 2N + 5P +# 5: N + 10P +# 6: 15P +# +# Example 3 +# +# Input: $amount = 100 +# Ouput: 292 + +import sys + +COINS = [50,25,10,5,1] + +def compute_num_ways(amount, coins): + while len(coins) > 1 and coins[0] > amount: + coins = coins[1:] + if len(coins) == 1: + return 1 + count = 0 + for v in range(0, amount+1, coins[0]): + count += compute_num_ways(amount-v, coins[1:]) + return count + +print(compute_num_ways(int(sys.argv[1]), COINS)) |
