G - 88888888 Editorial
by
Rssll_Krkgrd
\(V_N\bmod 998244353\) の値を繰り返し二乗法で直接求めます。
公式解説と同様に、\(N\) の桁数を \(K\) とし、 \(P=998244353\) とします。
また、 \(N\) を \(i\) 個つなげた整数を \(f(N,i)\) と書くことにします。
ここで、 \(f(N,i)\) の桁数が \(iK\) であることを考えると、
\(\begin{aligned}f(N,i)\bmod P=\begin{cases}N\bmod P&(i=1)\\\left(f\left(N,\frac{i}{2}\right)\cdot 10^{\frac{i}{2}\cdot K}+f\left(N,\frac{i}{2}\right)\right)\bmod P&(iが2以上の偶数)\\\left(f(N,i-1)\cdot 10^K+N\right)\bmod P&(iが3以上の奇数)\end{cases}\end{aligned}\)
が成立することがわかります。
(一般に、「整数 \(a\) 」と「 \(m\) 桁の整数 \(b\) 」をこの順につなげた整数は \(a\cdot 10^m+b\) となります。)
したがって、上の式に基づいて再帰的に \(V_N\bmod P=f(N,N)\bmod P\) を求めることができます。
(また、この解法は \(P\) が素数でないときにも用いることができます。)
posted:
last update: