CRT
解同余方程,形如(x equiv c_i mod m_i),我们对每个方程构造一个解满足:
对于第(i)个方程:(x equiv 1 mod m_i),(x equiv 0 mod m_j)((j!=i))
最后(ans=sum{x_i*c_i} mod M)
其中(M=prod m_i)
考虑构造(x_i),我们解同余方程(frac{M}{m_i}xequiv 1 mod m_i)
所以(x)为(inv(frac{M}{m_i},m_i)),最终(x_i=inv(frac{M}{m_i},m_i)*mi)
所以(ans=sum c_i*(M/m_i)*inv(frac{M}{m_i},m_i) mod M)
扩欧合并同余方程
合并两个同余方程
[egin{cases}
x equiv r_1 pmod {m_1}\
x equiv r_2 pmod {m_2}
end{cases}]
我们令(x=m_1*k_1+r_1=m_2*k_2+r_2),所以(m_1*k_1-m_2*k_2=r_2-r_1),我们只要解出一组$$(k1,k2)$$,用扩欧解即可,解出来带入原方程即可得到(x_0),方程变为(xequiv x_0 mod lcm(m1,m2))。
exLucas
不想写了,你可以看这里