中国剩余定理
简单记录一下推倒过程吧。
搞这种方程的。
(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)
问:为什么要求两两互质啊?
答:不互质,求个锤子逆元吖!