A - UkuNumber Editorial by kzrnm


\(u_1, u_2\) を辞書順最小にしたいので、\(u_1 = 1\) としたい。 \(u_2=X-1\) とすればこれはあきらかに \(u_1=1\) はあきらかに達成可能である。

\(u_2\) をより小さくする方法を考える。

\(F_0=0, F_1=1, F_k=F_{k-2}+F_{k-1}\)としたフィボナッチ数列を用いると、

\[u_k = F_{k-2} u_1 + F_{k-1} u_2 (k \ge 2)\]

である。

\(F_k \le 10^{18}\) の範囲を考えれば十分なので、\(F_k\)\(k\le88\) 程度で考えればよい。

\(u_1=1\) より

\[u_2 = \frac{X - F_{k-2}}{F_{k-1}} \]

が整数となる最小の \(k\)\(F_k\) の総当りで求めればよい。

posted:
last update: