前置知识
乘法逆元
- 给定整数b,m互质,且有b|a,则存在一个整数x,使得a/b ☰ a∗x(mod m)成立。此时,x便是b模m的乘法逆元,记为b−1(mod m)。
因为a/b☰a∗x☰a/b∗b∗b−1(mod m),所以b∗b−1☰1(mod m)。
特殊的,当m为质数时,由费马小定理可知,bm−1☰1(mod m),所以此时b−1(mod m) = bm−2。
若m不为质数,则需要求解线性同余方程b∗x☰1(mod m),来算出x。
线性同余方程
- 给定整数a,b,m。求满足方程a∗x☰b(mod m)的 x,或给出无解。
求解过程如下:
当然,这个是特解,通解表示如下:
x=((xo∗b/g)%(m/g)+(m/g))%(m/g)
其意义是,所以模(m/g)与(x*b/g)同余的整数。
具体推导过程有ACwing的聚聚AC_Jobim已经给出,点这里