码迷,mamicode.com
首页 > 其他好文 > 详细

扩展中国剩余定理(扩展CRT)详解

时间:2019-02-03 18:24:31      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:剩余定理   存在   情况下   乘法   text   style   假设   乘法逆元   ase   

今天在$xsy$上翻题翻到了一道扩展$CRT$的题,就顺便重温了下

中国剩余定理是用于求一个最小的$x$,满足$x\equiv c_i \pmod{m_i}$。

正常的$CRT$有一个微小的要求,就是$\forall i,j (m_i,m_j)=1$。

在某些情况下,这个式子无法被满足,这个时候就要用扩展$CRT$来求解了。

 

我们先假设我们只有两条方程要被求解,它们分别是:

$\begin{cases} x\equiv c_1 \pmod{m_1}\\x\equiv c_2 \pmod{m_2}\end{cases}$

我们考虑将同余去掉,就变成了:

$\begin{cases} x= c_1+m_1k_1\\x= c_2+m_2k_2\end{cases}$

联立一波,得:

$c_1+m_1k_1=c_2+m_2k_2$

$m_1k_1=(c_2-c_1)+m_2k_2$

若该方程存在解,则有$(m1,m2)|(c_2-c_1)$,否则无解

下面令$d=(m1,m2)$。

我们对等式两边全部除以$d$,得:

$\dfrac{m_1}{d}k=\dfrac{c_2-c_1}{d}+\dfrac{m_2}{d}k_2$

经过简单变式,得:

$\dfrac{m_1}{d}\equiv \dfrac{c_2-c_1}{d} \pmod{\dfrac{m_2}{d}}$

我们将$dfrac{m_1}{d}$移项到等式右侧,得:

$k_1 \equiv inv(\dfrac{m1}{d},\dfrac{m_2}{d})\times \dfrac{c_2-c_1}{d} \pmod{\dfrac{m_2}{d}}$

其中$inv(x,y)$表示模$y意$义下$x$的乘法逆元

重新将该式子变回等式,得:

$k_1 = inv(\dfrac{m1}{d},\dfrac{m_2}{d})\times \dfrac{c_2-c_1}{d} + y\dfrac{m_2}{d}$

该式子已经化简到尽了,考虑重新代入回最初的式子。

将$k_1$代入$x=c_1+m_1k$中,得:

$x\equiv inv(\dfrac{m1}{d},\dfrac{m_2}{d})\times \dfrac{c_2-c_1}{d} +c_1 \pmod{\dfrac{m_1m_2}{d}}$

至此,求两条式子的扩展$CRT$已经讲完了

如果方程有多条怎么办:我们做$n-1$次的两条式子的$CRT$合并就可以了。

 

扩展中国剩余定理(扩展CRT)详解

标签:剩余定理   存在   情况下   乘法   text   style   假设   乘法逆元   ase   

原文地址:https://www.cnblogs.com/xiefengze1/p/10350652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!