オンボロ階段の問題                          戻る

 当HPがいつもお世話になっているHN「at」さんからの出題です。
                                     (平成25年11月17日付け)

 「数学の部屋」というサイトに、『オンボロ階段の問題』という問題が掲載されてあります。

 寄せられた解答から、全部で841通りの上り方があります。この841通りの上り方のすべて
一覧にしました。例えば、( 3  1  2  1  1  3  3  1 ) という表記は、15段の階段を、

 1歩目が3段、2歩目が1段、3歩目が2段、4歩目が1段、5歩目が1段、6歩目が3段、
 7歩目が3段、8歩目が1段

で上るような上り方を意味します。

 この問題を少し一般化して、次のような問題を考えてみました。気が向いたら考えてみて
ください。

【問題】

 nを任意の正整数とします。石で出来たn段の古いオンボロ階段があり、階段は、一
度に3段までは上ることが可能です。しかし、5の倍数となる全ての整数k(5≦k<n)
に対して、下からk段目は補修工事でセメントが塗りたてのため、踏むことはできませ
ん。(
例えば、n=16 のとき、下から5段目と10段目と15段目は踏むことができません。)

 このオンボロ階段を上る方法の総数 f(n) をnの式で表してください。


 参考までに、n=1、2、3、…、16 に対するf(n)の値は次のようになります。

 f(1)=1、f(2)=2、f(3)=4、f(4)=7、f(5)=13、f(6)=11、f(7)=18、f(8)=29、f(9)=58、f(10)=105、
 f(11)=87、f(12)=145、f(13)=232、f(14)=464、f(15)=841、f(16)=696













(答) 空舟さんが考察されました。(平成25年11月19日付け)

 A[k]=matrix([f(5k+4)],[f(5k+3)],[f(5k+2)],[f(5k+1)]) とおいて、 A[k]についての漸化式を立
てれば、行列のn乗を求める問題に帰着されました。

 A[0]=matrix([f(4)],[f(3)],[f(2)],[f(1)])、A[1]=matrix([f(9)],[f(8)],[f(7)],[f(6)]) に対して、

   f(9)=f(8)+f(7)+f(6) 、f(8)=f(7)+f(6) 、f(7)=f(6)+f(4) 、f(6)=f(4)+f(3)

 下から上に代入して、 f(7)=2・f(4)+f(3) 、f(8)=3・f(4)+2・f(3) 、f(9)=6・f(4)+4・f(3)

 このとき、 P=matrix([6,4,0,0],[3,2,0,0],[2,1,0,0],[1,1,0,0]) とおけば、 A[1]=P・A[0] が成
り立ちます。このようにして、一般に、A[k+1]=P・A[k] が得られます。

 ハミルトンケーリーと多項式の割り算を使います。

 Pの固有多項式は、g(x)=x4-8x3 で、xn を g(x) で割った余りを r(x)=ax3+bx2+cx+d とおく。

 n≧3のとき、 r(8)=8n 、r(0)=0 、r'(0)=0 、r"(0)=0 より、 r(x)=8n-3・x3

 従って、n≧3 のとき、 Pn = 8n-3・P3

 A[0]=matrix([7],[4],[3],[1]) とおくと、 A[n]=Pn・A[0]

 以上により、次の結果を得ることができました。

 n≧3 のとき、f(5n+4)=58・8n-1、f(5n+3)=29・8n-1、f(5n+2)=145・8n-2、f(5n+1)=87・8n-2

 これらより、 f(5n+5)=841・8n-2

 以上は、n=2 でも成り立つようです。

 検討すると、Pの最小多項式は、x3-8x2 だったという事情でした。かなり単純な式になっ
たので意外でした!P3 = 8P2 と移項すれば、多項式の考え方を経由しなくて良かったです
ね。


(コメント) 明解な解答ですね!空舟さんに感謝します。


 at さんからのコメントです。(平成25年11月20日付け)

 空舟さん、この問題を考えていただきありがとうございます。行列を用いれば、きれいに解
けるのですね。空舟さんの提示された f(n) の式は簡明ですね。一応私の用意しておいた解
答も書いておきます。

f(n)=(n-8)(n-9)(15841n8-639398n7+10311722n6-85350380n5+387640529n4-953830982n3+1162017028n2
   -550627560n+42386400)・FLOOR((n-11)/(11(n+1)))/1857945600-145・2^(3・FLOOR(n/5))・2^(-9)・FLOOR(n/5+4/5)
   +29・2^(3・FLOOR(n/5))・2^(-5)・FLOOR(n/5+3/5)+87・2^(3・FLOOR(n/5))・2^(-6)・FLOOR(n/5+2/5)
   +29・2^(3・FLOOR(n/5))・2^(-3)・FLOOR(n/5+1/5)-2871・2^(3・FLOOR(n/5))・2^(-9)・FLOOR(n/5)
   +841・2^(3・FLOOR(n/5))・2^(-9).


 私は、包除原理と母関数を使って考えました。

 「n段目を除く5の倍数の階段は踏めない」という条件を無視すれば、上り方の総数を表す母関数
は、g(x)=(x+x2+x3)/(1-x-x2-x3) です。

 g(x)の ax5k (kは正の整数) という形にかける項だけを取り出して足し合わせたものを h(x) とす
れば、h(x)=x5(x10+x5+13)/(1-(21x5+x10+x15))

 f(n)の母関数 Σk=1〜∞ f(k)・xk は、

Σk=1〜∞ f(k)・xk=g(x)+g(x)・Σk=1〜∞ (-h(x))k=g(x)+g(x)(-h(x)/(1+h(x)))
=x(x2+x+1)(x12-x11+2x9-3x8+2x7+3x6-8x5+7x4+4x3+2x2+x+1)/(1-8x5)

 これを級数展開して、xn の係数を求めればいいです。