exCRT / 扩展中国剩余定理
对于同余方程:
\[
\begin{cases}
x\equiv c_1 \pmod{m_1}\\
x\equiv c_2 \pmod{m_2}\\
\cdots\\
x\equiv c_n \pmod{m_n}
\end{cases}
\]
若\(m_1, m_2, m_3\ldots m_n\) 互质,可以用普通CRT做(虽然我不会)。但若不互质,可以用exCRT求解。
考虑其中两个方程:
\[
\begin{cases}
x\equiv c_1 \text{ } \pmod {m_1}\\
x\equiv c_2 \text{ } \pmod {m_2}
\end{cases}
\]
它等价于:
\[
\begin{cases}
x = c_1 + m_1 * k_1\\
x = c_2 + m_2 * k_2
\end{cases}
\]
其中 \(k1,k2 \in \Z\) . 两式相减:
\[
m_1 * k_1 - m_2 * k_2 = c_2 - c_1
\]
这符合二元一次不定方程的形式。同时因为 \(k_1,k_2\) 是整数,可以用扩展欧几里得求出一组 \(k_1,k_2\) ,这样就能求出一组特解 \(x\) 了。
这里要注意:由于 \(-m2\) 是负数,\(k1\) 要对 \(\frac{k_2}{gcd(k_1, k_2)}\) 取模并化为正数。 至于模数为什么是这个,很好证明:\(k_1\) 减去 \(\frac{k_2}{gcd(k_1, k_2)}\),\(k_2\) 加上 \(\frac{k_1}{gcd(k_1, k_2)}\),左边 \(\frac{k_1 \times k_2}{gcd(k_1, k_2)}\) 一加一减就抵消了。
得出特解 \(x_0\) 之后,可以证明:两个方程等价于一个新方程:
\[
x \equiv x_0 \pmod {\text{lcm}(m_1, m_2)}
\]
再经过 \(n-2\) 次合并(总共 \(n-1\) 次),最后得到的 \(x_0\) 就是原方程组的解。
例题
P4777 【模板】扩展中国剩余定理(EXCRT)
- 这里要写“快速乘”,一边乘一边取模,否则会爆 long long 。