中国剩余定理学习笔记

I.CRT(中国剩余定理)

中国剩余定理:

已知方程

\[\begin{cases}x\equiv a_1\pmod{m_1}\\\vdots\\x\equiv a_n\pmod{m_n}\end{cases} \]

则我们设\(M=\prod\limits_{i=1}^nm_i,M_i=\dfrac{M}{m_i},b_i=(M_i)^{-1}\pmod{m_i}\)

则有

\[\boxed{x\equiv\sum\limits_{i=1}^na_iM_ib_i\pmod M} \]

很明显常规CRT只能在 \(m_i\) 全部互质的情形下使用,不然 \(b_i\) 不一定存在。

下面证明CRT:

类比拉格朗日插值,我们考虑找到一个式子,其模 \(m_1\)\(1\),模 \(m_{2\sim n}\) 均为 \(0\)。这样,其 \(a_1\) 倍就是仅模 \(m_1\)\(a_1\) 的数。对所有 \(a_i\) 都做上述操作并求和,就得到了符合条件的数。

因为 \(m_i\) 两两互质,所以模 \(m_{2\sim n}\) 均为 \(0\) 唯一等价于模 \(\prod\limits_{i=2}^nm_i\)\(0\),也即上文中的 \(M_1\)

我们设找到的这个式子为 \(kM_1\),则应有 \(kM_1\equiv1\pmod{m_1}\)。明显,其等价于 \(k\)\(M_1\) 在模 \(m_1\) 意义下的逆元,也即上文中的 \(b_1\)


这个方程的\(n=2,3\)的特例可以用来做任意模数NTT:

\[\begin{cases}x\equiv a\pmod{A}\\x\equiv b\pmod{B}\end{cases} \]

则有

\[x=a+\alpha A=b+\beta B \]

于是

\[a+\alpha A\equiv b\pmod B \]

所以

\[\alpha\equiv\dfrac{b-a}{A}\pmod B \]

求出\(\alpha\)后,就有\(x\equiv a+\alpha A\pmod{AB}\)

如果我们又有一个方程\(x\equiv c\pmod C\)

就直接联立出方程

\[\begin{cases}x\equiv a+\alpha A\pmod{AB}\\x\equiv c\pmod C\end{cases} \]

因为卷积的值域是\(n^3\)的,所以双模就可以支持\(10^6\)的模数,而三模则可以支持常规的\(10^9\)模数。

原文地址:https://www.cnblogs.com/Troverld/p/14620885.html