数论

扩展欧几里得

\(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)\)

posted @ 2020-11-01 15:32  王雨阳  阅读(90)  评论(0编辑  收藏  举报