DTOJ #6057. 置换乘法 题解
作者:互联网
首先把置换环转化成同余方程就不说了。
问题在于如何判断 \(10^6\) 个同余方程是否合法。
每个同余方程形如 \(x\equiv a\pmod{m}\)。
考虑逆 CRT,对于模数 \(m\),唯一分解成如下:
\[m=\prod_{i=1}^k p_i^{\alpha_i} \]然后方程可以拆分为:
\[\left\{\begin{matrix} x \equiv a \pmod{p_1^{\alpha_1}}\\ x \equiv a \pmod{p_2^{\alpha_2}}\\ \vdots\\ x \equiv a \pmod{p_k^{\alpha_k}} \end{matrix}\right. \]显然,这 \(k\) 组同余方程经过 CRT 合并后就会得到 \(x \equiv a\pmod{m}\)。
这时候,任意两个同余方程之间模数互质,一定可以合并,问题在于拆了若干个 \(m\) 后,同一个素数幂模数可能会有不同的 \(a\),此时显然同余方程无解。
还有另一种可能:对于同一个素数,不同幂次也可能有相互排斥的 \(a\)。比如 \(x\equiv 1\pmod{2}\) 且 \(x\equiv 2\pmod{4}\)。
考虑拆解同余方程的时候,不止拆成 \(k\) 个,而是对于每个素数的每个幂都拆一个,即拆 \(\sum_{i=1}^k \alpha_i\) 个。
会发现拆分出来的同余方程总量是可以接受的,读者自证不难
\(m\) 拆分出来的同余方程个数显然等于可重的质因数数量,\(\mathcal O(\log W)\) 级别的。
总同余方程数 \(\mathcal O(n\log n)\),上界很松,常数很小,数据很水,实测多加一个 map
的 \(\log\) 也能轻松通过。
标签:方程,log,pmod,题解,同余,alpha,6057,DTOJ,equiv 来源: https://www.cnblogs.com/lingfunny/p/16342421.html