There are four types of common coins in   US   currency:

   quarters   (25 cents)
   dimes   (10 cents)
   nickels   (5 cents),   and 
   pennies   (1 cent) 


There are six ways to make change for 15 cents:

   A dime and a nickel 
   A dime and 5 pennies
   3 nickels
   2 nickels and 5 pennies
   A nickel and 10 pennies
   15 pennies


Task

How many ways are there to make change for a dollar using these common coins?     (1 dollar = 100 cents).



Optional

Less common are dollar coins (100 cents);   and very rare are half dollars (50 cents).   With the addition of these two coins, how many ways are there to make change for $1000?

(Note:   the answer is larger than   232).



References

 an algorithm from the book Structure and Interpretation of Computer Programs.
 an article in the algorithmist.
 Change-making problem on Wikipedia.


 
program Count_the_coins;
 
{$APPTYPE CONSOLE}
 
function Count(c: array of Integer; m, n: Integer): Integer;
var
  table: array of Integer;
  i, j: Integer;
begin
  SetLength(table, n + 1);
  table[0] := 1;
  for i := 0 to m - 1 do
    for j := c[i] to n do
      table[j] := table[j] + table[j - c[i]];
  Exit(table[n]);
end;
 
var
  c: array of Integer;
  m, n: Integer;
 
begin
  c := [1, 5, 10, 25];
 
  m := Length(c);
  n := 100;
  Writeln(Count(c, m, n));  //242
  Readln;
end.
 