最近咋感觉总考 CRT,去年 APIO,今年 Day2T2 的部分分,回头找了一下自己学习笔记居然没找到,只能补一个了
中国剩余定理(CRT)
我们现在考虑一个形如 \(\begin{cases}x \equiv a_1 \pmod{m_1}\\x \equiv a_2 \pmod{m_2}\\\dots\\x \equiv a_n \pmod{m_n}\\\end{cases}\) 的方程组,其中 \(x,a_i,m_i\) 均为正整数,并且 \(m_i\) 互质
我们让 \(M=\prod_{i=1}^{n}m_i\),\(n_i=\frac{M}{m_i}\),\(n_i^{-1}\) 为 \(\bmod m_i\) 意义下的逆元,此时我们可以构造答案:
我们可以发现一个问题,就是这里的 \(m_i\) 只是互质,我们并没有保证 \(m_i\) 是质数,那很不好做了,我们就不能使用费马小定理,我们只能使用拓展欧几里得算法。
拓展中国剩余定理(EXCRT)
我们发现中国剩余定理有一个非常不好的事情,就是说这里的 \(m_i\) 必须互质,如果不互质就没法做,那我们考虑如何在 \(m_i\) 不互质的情况下接着进行 CRT
首先我们考虑这样的一个式子 \(\begin{cases} x \equiv a_1\pmod m_1 \\ x \equiv a_2 \pmod m_2\end{cases}\)
我们可以考虑这样的一个方程:\(\begin{cases} x=a_1+qm_1 \\ x=a_2+pm_2 \end{cases}\)
通过移项可以知道 \(a_1-a_2 = pm_2 - qm_1\)
那么我们知道,当 \(a_1-a_2\) 不能被 \(\gcd(m_1,m_2)\) 整除的时候,这个方程无解。否则一定可以构造出一组满足条件的 \(q,p\)
不过如果我们遇到的是 \(\begin{cases}x \equiv a_1 \pmod{m_1}\\x \equiv a_2 \pmod{m_2}\\\dots\\x \equiv a_n \pmod{m_n}\\\end{cases}\) 的方程组时就不能通过一次来实现了,我们需要进行 \(n-1\) 次的合并,最后就可以构造 \(x\) 的答案