Official

C - Repunits Editorial by Nyaan


まず結論を書きます。

\[R_n = \prod_{d \vert n} F_d\]

を満たすように \(F_1, F_2, \dots\) を定義します。すると、

\[\mathrm{LCM}(R_{A_1}, R_{A_2}, \dots, R_{A_n}) = \prod_{1 \leq i \leq n かつ d \vert A_i を満たす i が存在する d} F_d\]

が成り立ち、これが全てです。以降ではこの事実を証明していきます。

まず、レピュニットの重要な性質を次に挙げます。

補題 1

全ての正整数 \(n, m\) について \(\gcd(R_n, R_m) = R_{\gcd(n,m)}\) が成り立つ。

(補題 1 の証明) \(n=m\) の時は明らかに成り立ちます。\(n \gt m\) を仮定して一般性を失いません。このとき、

\[ \begin{aligned} \gcd(R_n, R_m) &=\gcd(R_n - R_m, R_m) \\ &= \gcd(R_{n-m} \times 10^m, R_m) \\ &= \gcd(R_{n-m}, R_m) \end{aligned} \]

という式変形により \(\gcd(R_n, R_m) = \gcd(R_{n-m}, R_m)\) を得ます。この事実に互除法の性質を合わせると \(\gcd(R_n, R_m) = R_{\gcd(n,m)}\) が従います。(補題 1 の証明終わり)

直感的な説明

上述の通り、\(R_n\) は非常に良い性質を持ちます。例えば \(\gcd(R_{12}, R_{30}, R_{24}) = R_6\) です。
ここで \(R_n = \prod_{d \vert n} F_d\)、例えば \(R_6 = F_1 F_2 F_3 F_6\) を満たす \(F_n\) を用いて \(R_n\) を表すと、例えば

\[ \begin{aligned} R_{12} &= F_1 F_2 F_3 F_4 F_6 F_{12} \\ R_{30} &= F_1 F_2 F_3 F_5 F_6 F_{10} F_{15} F_{30} \\ R_{24} &= F_1 F_2 F_3 F_4 F_6 F_8 F_{12} F_{24} \end{aligned} \]

であり、この \(3\) つに共通する \(F_1, F_2, F_3, F_6\) の積が GCD ということになります。そうすると LCM については逆に和集合を取って

\[\mathrm{LCM}(R_{12}, R_{30}, R_{24}) = F_1 F_2 F_3 F_4 F_5 F_6 F_8 F_{10} F_{12} F_{15} F_{24} F_{30}\]

のようになるだろうと予想されます。
この直感的な予想を式変形を用いて証明します。

  • 想定解はいくらか大仰な式変形になってしまいました。詳細は割愛しますが、「直感的な説明」にある議論を深めることで証明する方法もあり、そちらの方が自然に感じる方も多そうです。興味がある方は考えてみてください。

証明

補題 2

正整数の集合 \(S\) に対して次式が成り立つ。

\[\mathrm{LCM}(S) = \prod_{\emptyset \neq T \subseteq S} \mathrm{pow}(\gcd(T), (-1)^{\vert T \vert - 1})\]

(補題 2 の証明) 両辺への寄与を素数ごとに考えると、非負整数の集合 \(S\) に対して

\[\max(S) = \sum_{\emptyset \neq T \subseteq S} (-1)^{\vert T \vert - 1} \min(T)\]

が証明できれば命題が証明できることがわかります。
\(S\) の要素を降順に並べた列が \((s_1,s_2,\dots,s_n)\) であるとします。\(T\) の最小値が \(s_i\) であるものに対する \((-1)^{\vert T \vert - 1}\) の総和を考えると、

\[\sum_{0 \leq j\lt i} (-1)^j \binom{i-1}{j} = (1-1)^{i-1} = \lbrack i = 1 \rbrack\]

になることがわかります。(\(\lbrack \mathrm{cond} \rbrack\)\(\mathrm{cond}\) が真の時 \(1\) を、偽の時 \(0\) を取る関数) よって

\[\sum_{\emptyset \neq T \subseteq S} (-1)^{\vert T \vert - 1} \min(T) = s_1 = \max(S)\]

が成り立ち、命題は示されました。(補題 2 の証明終わり)

補題 1,2 を元に解法を証明します。(以降では集合に対する LCM を計算するので \(A_i\) は互いに異なるとしますが、そうでない場合も同様に証明できます) \(\mathrm{LCM}(\lbrace R_{A_1}, \dots, R_{A_n} \rbrace)\) を計算すると次のようになります。

\[ \begin{aligned} \mathrm{LCM}(\lbrace R_{A_1}, \dots, R_{A_n} \rbrace) &= \prod_{\emptyset \neq T \subseteq \lbrace R_{A_1}, \dots, R_{A_n} \rbrace} \mathrm{pow}(\gcd(T), (-1)^{\vert T \vert - 1}) \\ &= \prod_{\emptyset \neq T \subseteq \lbrace A_1,\dots,A_n \rbrace} \mathrm{pow}(R_{\gcd(T)}, (-1)^{\vert T \vert - 1}) \\ &= \prod_{\emptyset \neq T \subseteq \lbrace A_1,\dots,A_n \rbrace} \mathrm{pow}(\prod_{d \vert \gcd(T)} F_d, (-1)^{\vert T \vert - 1}) \\ &= \prod_d \mathrm{pow}(F_d, \sum_{\emptyset \neq T \subseteq \lbrace A_1,\dots,A_n \rbrace, d \vert \gcd(T)} (-1)^{\vert T \vert - 1} ) \\ &= \prod_d \mathrm{pow}(F_d, (-1) (1-1)^{\# \lbrace i \text{ s.t. } d \vert A_i\rbrace} + 1) \\ &= \prod_{1 \leq i \leq n かつ d \vert A_i を満たす i が存在する d} F_d \end{aligned} \]

以上より冒頭の式は示されました。

計算量は全てを適切に実装すると \(M = \max(N, \max(A))\) として \(\mathrm{O}(M \log \log M + \log \mathrm{mod})\) で問題を解くことができて非常に高速です。いくらかラフに書くと \(\mathrm{O}(M^{1.5})\) 程度になりますがこれでも十分高速です。

posted:
last update: