いまだに現金払い?

さて、今回もawkでパズルを解いてみることにする。

10円玉、50円玉、100円玉、500円玉の組み合わせに両替できる機械がある。
最大で15枚になるように両替します。  
1000円札を入れたときに出てくる硬貨の組み合わせは何通りあるかを求めよ。
なお、硬貨の順番は区別しないものとします。

素直に解いたものがコチラ

#!/usr/bin/awk -f

BEGIN{
    coin500 = 500;
    coin100 = 100;
    coin50 = 50;
    coin10 = 10;

    for(i = 0; i <= 2; i++){                # 500円は最大2枚
        for(j = 0; j <= 10; j++){           # 100円は最大10枚
            for(k = 0; k <= 15; k++){       # 50円は最大20枚
                for(l = 0; l <= 15; l++){  # 10円は最大100枚
                    if(i + j + k + l <= 15 &&\
                      coin500 * i + coin100 * j + coin50 * k + coin10 * l == 1000){
                          count++;
                      }
                  }
              }
          }
      }
      print count;
  }

実際に答えを求めてみると

# awk -f q05.awk
20

これは比較的簡単かも。