不変量を作って解く方法を解説する.
アイディア
anとbnの(大きい方)/(小さい方)の値をknとする.knは遷移によってあまり変わらないので,knを利用して不変量を作るのが良さそうである.そこで小さい数でknの遷移を観察しよう.例えば
(32,5)→(3,19)→(13,2)→(1,6)
という遷移の場合,knは
6.4→6.33⋯→6.5→6
となり,6から6.5の間を動く.また
(7,32)→(23,5)→(2,9)→(5,1)
という遷移の場合,knは
4.57⋯→4.6→4.5→5
となり,4.5から5の間を動く.
このような例から,kn以下の最大の0.5の倍数が不変であることが予想できる.ただし一つ目の例の6.5は6.4999…と解釈する(つまり6.5より小さいかのように扱う)必要があり,二つ目の例の5は4.9999…と解釈する(つまり5より小さいかのように扱う)必要がある.このような発想で不変量を作ると以下のようになる.
なお,ここまでの考察をもとに正しく不変量を予想できれば,それが不変量であることを証明せずとも答えを導くことができる.
解答
実数xに対し,x以下の最大の0.5の倍数を⟨x⟩で表すことにする.
定義からanとbnは常に互いに素であり,したがってan=bnとなるのは(an,bn)=(1,1)の場合のみである.また,(an,bn)=(1,1)ならばan−1−bn−1とan−bnの符号は異なる(公式解説参照).ここで十分小さい正の実数ε(例えばε=2−100000000000)を取り,
Pn={⟨kn−ε⟩⟨kn+ε⟩(an>bn)(an≤bn)
と定める.ただしkn=max{an,bn}/min{an,bn}である.このときPn−1=Pnが成り立つことを示そう.
- an−1>bn−1の場合,前述のようにan≤bnであり,(an−1,bn−1)が終状態でないことからbn−1≥2である.これらとan−1an−bn−1bn=1を合わせると
anbn<bn−1an−1≤anbn+0.5
が得られる.したがってkn+ε,kn−1−εはいずれもanbn<x<anbn+0.5の範囲にあるが,この範囲にはan0.5の倍数が存在しないので,特に0.5の倍数は存在しない.よってこれらに対する⟨x⟩の値は一致する.
- an−1<bn−1の場合,(an,bn)=(1,1)となるためan>bnであり,(an−1,bn−1)が終状態でないことからan−1≥2である.これらとan−1an−bn−1bn=1を合わせると
bnan−0.5≤an−1bn−1<bnan
が得られる.したがってkn−1+ε,kn−εはいずれもbnan−0.5<x<bnanの範囲にあるが,この範囲にはbn0.5の倍数が存在しないので,特に0.5の倍数は存在しない.よってこれらに対する⟨x⟩の値は一致する.
以上よりPnの値はnによらず一定である.終状態(aN,bN)における値は
(aN,bN)=(m,1),m>1⟹PN=m−0.5,(aN,bN)=(1,m),m≥1⟹PN=m
となり全て異なるため,終状態としてあり得る組の総数は,P0としてあり得る値の総数に等しい.初期状態(a0,b0)における値は
(a0,b0)=(225,1),(1,225)⟹P0=225−0.5,225,(a0,b0)=(225,x),(x,225)⟹P0=⟨225/x⟩=21⌊226/x⌋(x=3,5,7,…,225−1)
となるため,x=3,5,7,…,225−1に対する⌊226/x⌋としてあり得る値の総数に2を加えたものが答えである.あとは公式解説と同様である.