スーパーフィボナッチ数列を行列形式で表すと,

\[\begin{bmatrix} F_{A, B}(k-1) \\ F_{A, B}(k) \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ 1 & 1 \end{bmatrix} ^ {k-2} \begin{bmatrix} A \\ B \end{bmatrix}\]

となる. よって,

\[\begin{bmatrix} 0 & 1 \\ 1 & 1 \end{bmatrix} ^ {k-2} = \begin{bmatrix} a_k & b_k \\ c_k & d_k \end{bmatrix}\]

とおけば,

\[F_{A, B}(k) = c_kA + d_kB\]

となる. \(c_k, d_k\) はあらかじめ計算しておくのだが, \(k \geq 41\) になると \(d_k \gt 10^9\) となるので \(F(k) \gt 10^9\) となり, これは計算には不必要なので \(k \leq 40\) の範囲だけで考えればいい.

\(X, Y, Z\) は昇順にソートして同一値は除去しておく.

\(X, Y, Z\) がすべて同じ値の場合 (\(X\) のみが有効である場合) :

\(A=1, B=X\) というパターンがあるので \(A = 1\) は決定である. \(k\) を増やしていってより小さな \(B\) が見つかるかどうかを探す.

\(X, Y, Z\) のうち2つが同じ値の場合 (\(X, Y\) のみが有効である場合) :

\(40\) 本の方程式から2本を選び出す. この連立方程式

\[F_{A, B}(i) = X = c_iA + d_iB \\ F_{A, B}(j) = Y = c_jA + d_jB\]

の解 \((A, B)\) が正整数の範囲で求まるかを確認する. あとは方程式の選び方を全探索して \((A, B)\) の最小値を探す.

\(X, Y, Z\) がすべて異なる値の場合:

上の場合と同様に, \(40\) 本の方程式から2本を選び出す. この連立方程式

\[F_{A, B}(i) = X = c_iA + d_iB \\ F_{A, B}(j) = Y = c_jA + d_jB\]

の解 \((A, B)\) が正整数の範囲で求まるかを確認する. さらにこの \((A, B)\) の場合に

\[F_k{A, B}(k) = Z\]

となる \(k\) が見つかるかを確認する. あとは方程式の選び方を全探索して \((A, B)\) の最小値を探す.