プログラマ脳を鍛える会vol.5

2016/08/19に勉強会を開催した記録

最近は電車もバスも電子マネーが当たり前。 でも、いまだに現金で払う人も意外と多いもの。

今回はバスに設置されている両替機を考えます。 この機械では、10円玉、50円玉、100円玉、500円玉の組み合わせに両替することができ、いずれの硬貨も十分な枚数がセットされています。 (バスの運賃は現金の場合は10円単位になっているため、1円玉、5円玉は取り扱っていません)

両替する際に、使われない硬貨はあっても構いませんが、 バスの中でたくさんの小銭が出ると困るため、最大で15枚になるように両替します。 例えば、10円玉を100枚、という両替はできません。

このとき、1000円札を入れたときに出てくる硬貨の組み合わせは何通りあるかを求めてください。

なお、硬貨の順番は区別しないものとします。

引用: 第40回は「今週のアルゴリズム:いまだに現金払い?」 URL: https://codeiq.jp/magazine/2014/01/4493/

総当りで解く

総当り.限界値を先に求めて無駄な計算を排除.

Rubyの関数を駆使して解く

inject関数,repeated_combination関数を利用