中国剩余定理(CRT)

前置知识:exgcd

解决的问题

中国剩余定理(CRT)可求解如下形式的一元线性同余方程组(\(a_1, a_2, \dots a_k\) 两两互质):

\[\begin{cases} x &\equiv b_1 \pmod {a_1} \\ x &\equiv b_2 \pmod {a_2} \\ &\vdots \\ x &\equiv b_k \pmod {a_k} \end{cases} \]

过程

\(m = \prod a_i\) 为所有模数的积。

对于每个方程\(i\),设 \(m_i = \frac{m}{a_i}\), \(t_i = m_i^{-1} \pmod {a_i}\)

方程组的唯一解 \(x \equiv \sum\limits_{i= 1}^k b_i \cdot m_i \cdot t_i \pmod m\)

注意: 求逆元需要用 exgcd

for (int i = 1; i <= n; i++) {
  ll x, y; exgcd(m / a[i], a[i], x, y);
  ans = ((__int128)m / a[i] * x * b[i] + ans) % m;
}

证明

对于 \(\forall i\)\(m_i \cdot t_i \equiv 1 \pmod {a_i}\),即 \(b_i \cdot m_i \cdot t_i \equiv b_i \pmod {a_i}\)。而对于 \(\forall j \ne i\)\(a_i \mid m_j\),所以 \(b_j \cdot m_j \cdot t_j \equiv 0 \pmod {a_i}\)。所以 \(x \equiv b_i \pmod {a_i}\)

且若 \(x, y\) 只模 \(m\) 意义下不同,总存在 \(i\),使得 \(x, y\) 在模 \(a_i\) 意义下不同余。所以方程在模 \(m\) 意义下有唯一解。

posted @ 2025-07-14 09:22  xiehanrui0817  阅读(15)  评论(0)    收藏  举报