|
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 |