エクサウィザーズプログラミングコンテスト2021 (AtCoder Beginner Contest 222 - ABC 222) G - 222 を解説ACしました.公式解説そのままですが,予備知識のところを self-contained になるように書きました.
問題概要
整数 K が与えられる.
数列 2, 22, 222, 2222, .... に,初めて K の倍数が現れるのは何項目か?
現れなければ -1 と答えよ.T個のケースが与えられる.
制約: T <= 200, K <= 10^8
予備知識
フェルマーの小定理
整数 $a$ が素数 $p$ と互いに素ならば, $a^{p - 1} \equiv 1 \text{ (mod } p \text{)}$.
証明
$a^p \equiv a$ を言えば良い.帰納法. $a^p = (a - 1 + 1)^p = (a-1)^p + 1 + \sum_{r = 1}^{p-1}\binom{p}{r}(a-1)^r \equiv (a-1)^p + 1 \equiv a - 1 + 1 = a$.(終)
オイラーの$\varphi$関数
正の整数 $n$ に対し,$n$ と互いに素である $n$ 以下の正の整数の 個数を $\varphi(n)$ とする.
命題
$n$ の素因数分解を $\prod_{k=1}^{d}p_k^{e_k}$ とするとき, $\varphi(n) = \prod_{k=1}^{d}(p_k^{e_k} - p_k^{e_k - 1})$
証明
素数 $p$ に対して $\varphi(p^e) = p^e - p^{e-1}$ であることと, $m, n$が互いに素であるとき $\varphi(mn) = \varphi(m)\varphi(n)$ であることを言えば良い.前半は明らか. 後半: $t$ と互いに素である $t$ 以下の正の整数の集合を $P(t)$ とする. $x \in P(mn)$ に対して $(x \% m, x \% n) \in P(m)\times P(n)$ を対応させる写像が1対1, onto になる (中国剰余定理).(終)
オイラーの定理
$a$ と $n$ が互いに素ならば, $a^{\varphi(n)} \equiv 1 \text{ (mod } n \text{)}$
証明
$X = \{ ax \% n \mid x \in P(n) \}$ とすると, $X \subseteq P(n)$ と $|X| = |P(n)|$ より,$X = P(n)$. したがって,$d := \prod_{x \in P(n)} x$ とすれば, $a^{\varphi(n)} d \equiv d$.$d$ と $n$ は互いに素なので, $a^{\varphi(n)} \equiv 1$.(終)
解法
数列の第 n 項は,$2 (10^n - 1) / 9$ と書ける. $K$ が奇数のとき,$\alpha = 9K$,$K$ が偶数の時,$\alpha = 9K/2$ とすると, $2 (10^n - 1) / 9 \equiv 0$ (mod $K$) $\iff 2 (10^n - 1) \equiv 0$ (mod $9K$) $\iff 10^n \equiv 1$ (mod $\alpha$).
ここで,$\alpha$ が 2か5で割り切れる場合には,$10^n$ は mod $\alpha$
で 1 にはなり得ない.
そうでない場合,
$10^n \equiv 1$ となる正の $n$ の最小値を取る.
$n = q\varphi(\alpha) + r$, $0 \leq r < \varphi(\alpha)$
$\varphi(\alpha) = qn + r$, $0 \leq r < n$
とすると,
オイラーの定理より
$10^r \equiv 1$ となるので,最小性より $r = 0$.
すなわち,$n$ は $\varphi(\alpha)$ の約数.これを全探索すれば良い.
(2023.03.25 追記: 間違っていた数式を修正しました.
ご指摘
くださいました @kumakumaaaaa__ さん,ありがとうございました.)
計算量は,$\varphi(\alpha)$ を求めるために $K$ を素因数分解 するところで,$O(\sqrt{K})$ と,約数列挙が $O(\sqrt{K})$ で,合わせて $O(\sqrt{K})$.
ACコード
https://atcoder.jp/contests/abc222/submissions/26539813
keywords: Fermat Fermat’s theorem Euler phi function