中国剩余定理&拓展中国剩余定理
前置知识: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 - 洛谷。

浙公网安备 33010602011771号