Evolton

九州大学 2001年度 前期日程 第2次学力試験 整数・数列理系数学 第4問(c)

mnを自然数とする.次の算法を考える.

(a) i=mj=nk=0

(b) i=1ならばAns=k+jとして終了する.

(c) iの値が奇数ならk=k+jとする.

(d) i=[i/2]

(e) j=2j

(f) (b)に戻る.

(ここで,[x]xを越えない最大の整数を表す.)

(1) m=100のとき,3周目と4周目の(b)におけるijkの値を求めよ.
たとえば1周目ではi=100j=nk=0である.

(2) 一般のmに対して,(b)におけるijkの値について
ij+kは1周目から最後まで一定であることを示せ.

(3) 一般のmに対して,Ansを求めよ.

(4) lを自然数とする.m=32lのとき,
終了するまでに何回(d)を実行するか.

難易度5/ 10計算量4/ 10目安15

整数数列 帰納的定義の利用、計算整理、数学的帰納法

方針

ij+k が各周回の(b)で不変であることを示す。i が偶数なら半分にした i と2倍した j の積は変わらず、i が奇数なら先に kj を足すことで失われる1個分を補っている。(4)は m=32l を何回半分にすると1になるかを、3 まで下がる段階と、その後 1 になる段階に分けて数える。

解答

(1)

1周目の(b)では (i,j,k)=(100,n,0) である。100 は偶数なので、次の周回では (i,j,k)=(50,2n,0) となる。さらに 50 も偶数なので、3周目の(b)では (i,j,k)=(25,4n,0) である。ここで 25 は奇数なので、(c)で k=4n となり、その後 i=[25/2]=12j=8n となる。したがって4周目の(b)では (i,j,k)=(12,8n,4n) である。

(2)

ある周回の(b)での値を (i,j,k) とする。i が偶数のときは、次の周回で i=i2,j=2j,k=k となるから ij+k=i22j+k=ij+k である。 i が奇数のときは i=2h+1 とおける。(c)で kk+j となり、その後 i=h,j=2j,k=k+j となる。したがって ij+k=2hj+k+j=(2h+1)j+k=ij+k である。

よって、どちらの場合も ij+k は次の周回で変わらない。1周目では ij+k=mn だから、最後まで一定値は mn である。

(3)

終了時は(b)で i=1 となっており、Ans=k+j と定められる。このとき k+j=ij+k である。(2)より ij+k=mn だから Ans=mn である。

(4) m=32l から始める。i が偶数である間は、(d)を1回行うごとに i は半分になる。したがって(d)を l 回行うと i=3 となる。次に i=3 は奇数なので、(c)を行った後、(d)で i=[3/2]=1 となる。この次に(b)へ戻ると終了する。

したがって(d)を実行する回数は l+1 である。

別解

解法2

方針

算法を2進法の筆算とみなす。i の最下位桁を1周ごとに読み、
その桁が1なら現在の j=2snk へ加える。
終了回数も2進表示の桁移動として数える。

解答

(1)
半減列は 100,50,25,12,jn,2n,4n,8n,
である。25が奇数のときだけ 4n を加えるので(25,4n,0),(12,8n,4n)となる。

(2) m=ν=0sεν2ν(εν=0,1) とする。r 回処理した時点でi=ν=rsεν2νr,j=2rn,k=ν=0r1εν2νn.したがってij+k=mnで、全周回を通じて一定である。

(3)
終了時は i=1 だからAns=k+j=ij+k=mn.(4)
m=32ll 回の右桁移動で3になり、
さらに1回で [3/2]=1 になる。したがって(d)の実行回数はl+1回である。

総評

アルゴリズムを不変量で解析する問題。難度は標準、計算量は少なめで、目安時間は14〜18分。ij+k が一定であることは、偶数の場合と奇数の場合をそれぞれ1行ずつ計算すれば示せる。(1)では「何周目の(b)における値」なので、(c)(d)(e)を終えて戻ってきた値を答える点に注意する。(4)は i=1 になった時点で次の(b)で終了するため、最後に余計な半減を数えないことが大切である。

冊子PDFで見る九大の整数の問題で問題集を作る

出典: 九州大学 2001年度 前期 理系 第4問(大学公式の問題PDF)。問題文はHTML表示のために再入力・数式組版しています。