# Given an integer amount in cents, return the number of distinct ways to make
# exact change using pennies (1 cent), nickels (5 cents), dimes (10 cents), and
# quarters (25 cents).
def exact_change(amount):
change_with_quarters = 0
change_with_dimes = 0
change_with_nickels = 0
change_with_pennies = 1
if amount >= 25:
remaining = amount % 25
change_with_quarters = calculate_change(remaining) + amount // 25
if amount >= 10:
remaining = amount % 10
change_with_dimes = calculate_change(remaining) + amount // 10
if amount >= 5:
remaining = amount % 5
change_with_nickels = calculate_change(remaining) + amount // 5
print(f"quarters are {change_with_quarters}. dimes are {change_with_dimes}. nickels are {change_with_nickels}. pennies are {change_with_pennies}")
return change_with_quarters + change_with_dimes + change_with_nickels + change_with_pennies
def calculate_change(amount):
if amount >= 25:
remaining = amount % 25
return calculate_change(remaining) + amount // 25
if amount < 25 and amount >= 10:
remaining = amount % 10
return calculate_change(remaining) + amount // 10
if amount < 10 and amount >= 5:
remaining = amount % 5
return calculate_change(remaining) + amount // 5
return 0
result = exact_change(17)
print(f"Exact change of 17 cents is {result}")
result = exact_change(14)
print(f"Exact change of 14 cents is {result}")
result = exact_change(39) # should return 24.
print(f"Exact change of 39 cents is {result}")
result = exact_change(61)
print(f"Exact change of 61 cents is {result}")
result = exact_change(99)
print(f"Exact change of 99 cents is {result}")