AGC015-F Kenus the Ancient Greek
問題概要
回にわたって整数
が与えられる。
を満たす整数
の組で、Euclid の互除法を走らせた時の反復回数の最大値と、それを導く組の個数を求めよ。
解法
まず、最大値を求めることを考える。回数ごとに組の最小値を貪欲に考えていくと、フィボナッチ数列に帰着され、簡単に回数が求まるところまでは明らかだろう。
フィボナッチ数列は、 と定義しよう。
ここで、フィボナッチ数列の性質に注目すると、 では
を満たす。これを考えると、ある組を
倍したものが可能なら、その次の組も使えて、その組の操作回数が最大だったことに矛盾するため、答えとして求まる組は互いに素である。
次に、このような組の個数を数えることを考える。
実は、組としてありうるものは、最大回数を 回として、
をみたす
を用いて
と表せる。
互除法の操作を後ろから考えると、どこかで、 以上の整数
を用いて
のように漸化式の過程が変化して数列が生成される場合も、操作回数は変わらないことがわかる。このように途中で別の漸化式を用いることを「逸脱」と呼ぼう。
組から数列は一意に定まるので、逸脱も含めて、題意を満たす組を生成する数列の個数を数えればよい。
実は、逸脱は題意を満たす組を導く数列を生成する過程で、 では高々
回しか起こらない。また、そのとき必ず
である。これは、先ほど述べたフィボナッチ数列の性質をもとに示せる。これから、組を表す式が導けて、また、この事実から、
、つまり
であれば
となることもわかる。
で起こり得る逸脱の回数は、簡単な除算だけで求められるので、
において逸脱がどこで起こるかを決めれば、組の個数を数えることができる。
は
であるため、この問題は
で解けた。
感想
フィボナッチ数列が題材のため、観察だけしていれば解けてしまう(その上証明がほとんどいらない)