CRT和ExCRT是用来求解如下的线性同余方程组的:
\[ x\equiv a_1\ (mod\ p_1)\\ x\equiv a_2\ (mod\ p_2)\\ ……\\ x\equiv a_n\ (mod\ p_n)\\ \]
先考虑特殊一点的情况:任意的pi互质。可以用CRT解决。
CRT的核心思想就是构造。
考虑构造出每一个同余方程的解,并且使它们可以直接合并成最终答案,即两两之间互不影响。
\[ 令:\\ PP=\sum_{i=1}^n{p_i}\\ Pi=PP/pi\\ Ti为方程:Ti*Pi\equiv 1\ (mod\ p_i)\ 的解\\ 那么最后ans=\sum_{i=1}^n a_i*T_i*P_i \]
正确性很显然,回代进每一个方程即可。
但是 这个的正确性是基于pi互质的,如果不互质显然这个就不一定成立了。
那么怎么办呢?
不妨顺次考虑每一个方程,假设现在考虑到了第i个方程,前面i-1个方程的的通解已经求出记为X。
\[ 令:\ PP=\sum_{j=1}^{i-1}{p_i}\ X=S+k*PP\ (K\in \not Z) \]