写一下中国剩余定理的证明

中国剩余定理

简单记录一下推倒过程吧。

搞这种方程的。

(x\%m_1=c_1,x\%m_2=c_2,x\%m_3=c_3..........)

EXCRT

先来表演,将两个方程合并:
(x\%m_1=c_1), (x\%m_2=c_2)

Duang!Duang!

(x=k_1m_1+c_1=k_2m_2+c_2)

(k_1m_1-k_2m_2=c_2-c_1)

(g=gcd(m_1,m_2)),有(k_1frac{m_1}{g}-k_2frac{m_2}{g} = frac{c_2-c_1}{g})

在模(frac{m_2}{g})系下:(frac{m_1}{g}k_1= frac{c_2-c_1}{g})

解得(k_1=frac{c_2-c_1}{g}*inv(frac{m_1}{g},frac{m_2}{g}) + kfrac{m_2}{g})

(x=[frac{c_2-c_1}{g}*inv(frac{m_1}{g},frac{m_2}{g}) m_1+c_1]+kfrac{m_1m_2}{g})

好了,两个同余方程就这么合并了。然后我们对于那(n)个方程合并(n-1)次,就是EXCRT了

emmm. 同余方程的合并和生成树这种东西,是不是可以珠联璧合。然后搞出什么有趣的东西啊。

CRT

这个一点也不好用,还得保证(m_1,m_2...)两两互质。

有种暴力构造的感觉。

直接给答案啦(x=sum c_ifrac{M}{m_i}inv(frac{M}{m_i},m_i))

因为在模(m_i)系下(frac{M}{m_i}inv(frac{M}{m_i},m_i)=1)

所以当且仅当(i=x)时,(c_ifrac{M}{m_i}inv(frac{M}{m_i},m_i)\%m_x=c_x),否则(c_ifrac{M}{m_i}inv(frac{M}{m_i},m_i)\%m_x=0)

问:为什么要求两两互质啊?

答:不互质,求个锤子逆元吖!

原文地址:https://www.cnblogs.com/RUSH-D-CAT/p/9736224.html