CRT&&ExCRT

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 Z) \]

假设第i个方程存在一个根X0,满足X0=S+T*PP,那么X0为前i个方程的通解。

所以现在的问题转化为求一个T,使之满足:

\[ S+T*PP\equiv a_i\ (mod\ p_i) \]

来一波转化:

\[ S+T*PP\equiv a_i\ (mod\ p_i)\\ \iff T*PP\equiv a_i-S\ (mod\ p_i)\\ \iff T*\frac{PP}{gcd(PP,p_i)}\equiv \frac{a_i-S}{gcd(PP,p_i)}\ (mod\ \frac{p_i}{gcd(PP,p_i)}) \]

此时上方程可以用Exgcd解决。

所以整个问题得到解决!

转载于:https://www.cnblogs.com/Bhllx/p/10658643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值