過去ログ

Mr.ダンディ
#34109 スモークマンさん 取り組んでいただき有難うございます。
uchinyanさんがご指摘のところでのミス。 ほとんど出来ていただけに惜しかったですね〜

#34105 uchinyanさん
2通りもの解法およびプログラムでのチェック 有難うございます。
1つ目の解法は考えていませんでした。すっきりとしていていいですね。
2つ目は「11以上」だとこれで十分ですが、例えば「16以上」などとなると面倒になりそうですね。

私の想定解法は次のようなものでした。

1〜7の数を足していって、丁度nになるときの場合の数を a(n) とすると
a(1)=1, a(2)=2, a(3)=4, a(4)=8, a(5)=16, a(6)=32, a(7)=64
n≧8 の場合は、一歩手前に何を足したかを考えると
a(n)=a(n-7)+a(n-6)+a(n-5)+a(n-4)+a(n-3)+a(n-2)+a(n-1)  となります。
(少し掘り下げると a(8)=127 , n≧9のとき a(n)=2*a(n-1)−a(n-8) となります)

これによると a(8)=127 ,a(9)=253 ,a(10)=504 ,a(11)=1004, a(12)=2000,・・・ となり

和が n以上 (n≧8)になるときの場合の数は 
a(n-7)*1+a(n-6)*2+a(n-5)*3+a(n-4)*4+a(n-3)*5+a(n-2)*6+a(n-1)*7 で求まります。

よって n=11のときだから 8*1+16*2+32*3+64*4+127*5+253*6+504*7=6073 となります。
大阪   3月13日(金) 20:56:02     34113

過去問題一覧へ戻る