qoj18370 Map1e
令 \(R(k)= \underbrace{111\dots1}_{k}\)。
多次询问 \(N\),求出最大的 \(k\) 使得 \(R(k)\) 整除 \(N\)。
\[|N|\le 10^5,\sum |N| \le 5\times 10^5
\]
有 \(R(k)=\dfrac{10^k-1}9\),则欲最大化 \(k\) 使得
\[10^k-1 \mid 9N
\]
不妨记 \(M=9N,r(k)=10^k-1\),欲满足:
\[M\equiv 0\pmod{r(k)}
\]
注意到
\[10^k\equiv 1\pmod{r(k)}
\]
因此相当于每 \(k\) 个数一段,每段求和,记所得和为 \(s(k)\)。
我们希望 \(s(k)=qr(k)\),其中 \(q\) 为整数,且 \(q\le n\)。
不妨取若干模数 \(\text{mod}\),若模 \(\text{mod}\) 意义下 \(s(k)(r(k))^{-1}>n\),则 \(q\) 必不为整数。
如此即可 \(\mathcal O(\frac nk)\) 检验每个 \(k\),由调和级数性质,时间复杂度 \(\mathcal O(\sum|N|\ln|N|)\)。
出题人没素质卡了常见模数,有一个快速生成罕见模数的方法。
openssl prime -generate -bits 30
本文来自博客园,作者:CuteNess,转载请注明原文链接:https://www.cnblogs.com/CuteNess/p/22580051

浙公网安备 33010602011771号