数论
扩展欧几里得
\(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)\)