login
A260688
a(n) = the least number of pieces of currency of denominations .01, .05, .10, .25, 1, 5, 10, 20, 50, 100 that the greedy algorithm uses to make n times .01 (n "cents") in change.
1
0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9
OFFSET
0,3
COMMENTS
The coin system defined by these values is canonical (the greedy algorithm always yields the minimal number of coins). This has been verified for all amounts less than $150, which is sufficient. Please refer to Kozen and Zaks (1994). - Adam Reichert, Jun 25 2026
LINKS
D. Kozen and S. Zaks, Optimal Bounds for the Change-Making Problem, Theoretical Computer Science, 123 (1994), 377-388.
PROG
(Python)
def how_many(cents):
#d = denominations
d = ['$0.01', '$0.05', '$0.10', '$0.25',
'$1', '$5', '$10', '$20', '$50', '$100']
coins = {coin: 100*float(str(coin)[1:]) for coin in d}
how_many = {d[i]: 0 for i in range(10)}
while len(d) != 0:
how_many[d[-1]] = cents // coins[d[-1]]
cents %= coins[d[-1]]
d.pop()
return int(sum(how_many.values()))
CROSSREFS
KEYWORD
nonn,easy
AUTHOR
Edward Minnix III, Nov 15 2015
EXTENSIONS
Edited by N. J. A. Sloane, Apr 24 2016
STATUS
approved