数学(4)——中国剩余定理
有如下一元线性同余方程组(保证\(n_1, n_2, \cdots, n_k\)互质)。
\[\begin{cases}
x &\equiv a_1 \pmod {n_1} \\
x &\equiv a_2 \pmod {n_2} \\
&\vdots \\
x &\equiv a_k \pmod {n_k} \\
\end{cases}
\]
\[\texttt{Solving}
\]
求出
\[\N=\prod_{i=1}^{k}n_i
\]
分别计算
\[m_i=\frac{\N}{n_i},m_i^{-1} \ (m_i \bmod n_i)
\]
得到每个
\[c_i=m_i\times m_i^{-1}
\]
可以得出方程组的唯一解是
\[x=\sum_{i=1}^{k}a_i\times c_i (\bmod \N)
\]
\[\texttt{Proof}
\]
取第 \(i\) 个和第 \(j\) 个( \(i\neq j\) ),有 \(m_j \equiv 0 \pmod {n_i}\)
\[\therefore c_j\equiv m_j \equiv 0 \pmod{n_i}
\]
\[又 \ c_i\equiv m_i (m_i^{-1} \bmod n_i)\equiv 1 \pmod{n_i}
\]
\[\begin{aligned}
\therefore x&\equiv \sum_{j=1}^{k} a_j \times c_j & \pmod{n_i}\\
&\equiv a_i \times c_i & \pmod{n_i}\\
&\equiv a_i \times m_i & \pmod{n_i}\\
&\equiv a_i &\pmod{n_i}
\end{aligned}
\]
对于任意的 \(i\in [1,k]\) , 满足 \(x \equiv a_i \pmod{n_i}\)
\[\texttt {QED}
\]
求逆元多种方法都可以,这里 \(n_i\) 不一样所以线性推貌似不能用,建议用 exgcd()
未完待续……
如果遇到不保证 \(n_i\) 互质的情况怎么办。
不互质会导致 \(m_i^{-1}\pmod{n_i}\) 不存在,因为存在任意一组 \(n_i,n_j\) 不互质就会导致存在 \(m_i\) 与 \(n_i\) 不互质,因为 \(m_i\) 中自然有 \(n_j\) 这个因子。显然 \(m_i^{-1}\) 也不存在。
那么如何解决这个问题呢,因为不互质是成队出现的情况,所以我们只需要将那些不互质组的分离再求解,然后再合并这些解就可以解决了,具体实现方法就是关键字合并。
稍微进行一下推导,写式子我还是不太在行。
假设子任务方程组是前两个。
\[\begin{cases}
x \equiv a_1 \pmod{n_1} \\
x \equiv a_2 \pmod{n_2}
\end{cases}
\]
那么可以表示为
\[\begin{cases}
x = a_1 + k_1n_1 \\
x = a_2 + k_2n_2
\end{cases}
\]
\[k_1n_1-k_2n_2=a_2-a_1\\
约定 G= \gcd(n_1,n_2)\\
\frac{n_1}{G}k_1-\frac{n_2}{G}k_2=\frac{(a_2-a_1)}{G}\\
\therefore \frac{n_1}{G}k_1\equiv \frac{(a_2-a_1)}{G}\pmod{\frac{n_2}{G}}\\
k_1\equiv(\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}\pmod{\frac{n_2}{G}}\\
\therefore k_1=(\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}+\frac{n_2}{G}\times y
\]
带入 \(x=a_1+k_1n_1\)
\[x=a_1+((\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}+\frac{n_2}{G}\times y)\times n_1\\
x=a_1+(\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}\times n_1+\frac{n_2n_1}{G}\times y \\
x\equiv (\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}\times n_1+a_1 \pmod{\frac{n_1n_2}{G}}
\]
我们发现 \(\displaystyle \frac{n_1n_2}{G}\) 就是 \(\text{lcm} (n_1,n_2)\)
所以就可以一直通过以上式子合并,如果合并时发现无解就自然整个方程组无解。
Reference:
- \(\text{OI Wiki}\) - 中国剩余定理
博主已经退役啦,现在在家里睡大觉ZzzzzzzzzzzzZ