>>614

小銭入れに500円玉100円玉50円玉10円玉5円玉1円玉がそれぞれ1、5、2、5、2、5個入っていたとき

555円の支払い方法は

> how2pay(555,rep(c(500,100,50,10,5,1),c(1,5,2,5,2,5)))
1 : 500 50 5
2 : 500 50 1 1 1 1 1
3 : 500 10 10 10 10 10 5
4 : 100 100 100 100 100 50 5
5 : 500 10 10 10 10 10 1 1 1 1 1
6 : 100 100 100 100 100 50 1 1 1 1 1
7 : 100 100 100 100 100 10 10 10 10 10 5
8 : 500 10 10 10 10 5 5 1 1 1 1 1
9 : 100 100 100 100 50 50 10 10 10 10 10 5
10 : 100 100 100 100 100 10 10 10 10 10 1 1 1 1 1
11 : 100 100 100 100 100 10 10 10 10 5 5 1 1 1 1 1
12 : 100 100 100 100 50 50 10 10 10 10 10 1 1 1 1 1
13 : 100 100 100 100 50 50 10 10 10 10 5 5 1 1 1 1 1
[1] 13

の13通り。実は13通りになる支払い総額がもうひとつあるので探索してみると楽しい。
まあ、罵倒しかできないクズにはその楽しみは享受できないが。


小学校からプログラムを教えるようになったらしいから、いずれはこういう解法ができる小学生が普通になるのだろうか?教えられる教員が十分にいるのかは疑問。