中国剩余定理&拓展中国剩余定理

前置知识:exgcd

exgcd:用于解不定方程 \(ax+by = c\) ,可以证明,只有在 c 是 \(\gcd(a,b)\) 倍数的时候才有解。

中国剩余定理(CRT):

条件:(所有p互质)
题目:
x = y1(mod p1)
x = y2(mod p2)
…………
x = yn(mod pn)
令 M = \(\prod\)p,\(m_i\) = M / \(p_i\)
x = \(\sum_{i=1}^n y_i * m_i * m_i^{p_i-2} + K*M\) (K是任意数,x有无数个)

如果 p 都是质数,逆元可以直接用费马小定理求。

如果 p 不都是质数,只是两两互质,逆元用 exgcd 求。

拓展中国剩余定理(exCRT):

对 p 没有任何限制。但是此时不一定有解。

例如:

\[\left\{\begin{matrix} x\equiv2 \bmod 4\\ x\equiv3 \bmod 6 \end{matrix}\right. \]

你要是算出一组解来 我请你抽烟。exCRT 还具有检验方程是否有解的能力。

考虑只要能一个一个地去合并方程,就可以搞出答案。

考虑合并这两个方程:

\[\left\{\begin{matrix} x\equiv r_1 \bmod m_1\\ x\equiv r_2 \bmod m_2 \end{matrix}\right. \]

\[\left\{\begin{matrix} x = r_1 + k_1 * m_1\\ x = r_2 + k_2 * m_2 \end{matrix}\right. \]

上下相减:

\[k_1 * m_1 - k_2 * m_2 = r_2 - r_1 \]

用 exgcd 解方程即可得到 \(k_1,k_2\),可以搞出一个 \(x_0\) ,通解是 \(x = x_0 + k*lcm(m_1,m_2)\),所以合并出来的方程就是 \(x\equiv x_0 \bmod lcm(m_1,m_2)\).

写代码小心爆 long long。

模板:P4777 【模板】扩展中国剩余定理(EXCRT) - 洛谷

例题:[P4621 COCI 2012/2013 #6] BAKTERIJE - 洛谷

posted @ 2025-03-26 15:08  花子の水晶植轮daisuki  阅读(12)  评论(0)    收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js