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\)模数。