扩展欧几里得
(ax+by=c)
通解: (x = x_0 frac{c}{d} + k frac{b}{d}, y = y_0 frac{c}{d} - k frac{a}{d})
得到最小整数解的代码 / 得到在([0 , frac{b}{d} )) 内的唯一解:
mod = b / d;
x *= c/d;
x = (x % mod + mod) % mod;
注意事项:
1.为了保证求出来的(d)是正数,需要传入的a和b也是正数。(a与b是正数也可能求出负数,所以还要取模)
2.方程在([0,b))中有d个解
中国剩余定理:单独考虑一个方程,并且答案不影响其他方程,最后将各个答案加和。
(x = b_i (mod a_i))
(M = Pi a_i)
(m_i = frac{M}{a_i})
(m_i t = 1(mod a_i))