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.


include "NSLog.incl"
 
void local fn Doit
  long penny, nickel, dime, quarter, count = 0
 
  NSLogSetTabInterval(30)
 
  for penny = 0 to 100
    for nickel = 0 to 20
      for dime = 0 to 10
        for quarter = 0 to 4
          if penny + nickel * 5 + dime * 10 + quarter * 25 == 100
            NSLog(@"%ld pennies\t%ld nickels\t%ld dimes\t%ld quarters",penny,nickel,dime,quarter)
            count++
          end if
        next quarter
      next dime
    next nickel
  next penny
 
  NSLog(@"\n%ld ways to make a dollar",count)
end fn
 
fn DoIt
 
HandleEvents