同模定理
模运算的加法,减法,乘法和四则运算类似
A * B % C = (A%C * B%C)%C
(A + B)%C = (A%C + B%C)%C
(A - B)%C =(A%C - B%C)%C
但是除法并非如此,因为很大的可能会有小数或者是分数在除法的运算中出现,这样子的话,结果就是不对的。
举一个例子:
5
/
3
5/3
5/3 % 2=1.6666666666666666666666666666667,但是(5%2/3%2)%2=1。
逆元的求法
1. 快速幂求逆元
我们根据费马小定理可以得出:如果p为质数,且a为正整数,那么 a p − 1 = 1 a^{p-1}=1 ap−1=1。
我们设x是a的逆元
那么:
a
∗
x
≡
1
(
m
o
d
p
)
a*x\equiv 1 \pmod p
a∗x≡1(modp)
a
∗
x
≡
a
p
−
1
(
m
o
d
p
)
a*x\equiv a^{p-1} \pmod p
a∗x≡ap−1(modp)
x
≡
a
p
−
2
(
m
o
d
p
)
x \equiv a^{p-2} \pmod p
x≡ap−2(modp)
此时,就可以直接用快速幂求出逆元啦。
我们还有一个O(n)递推求逆元的方法:
i n v [ i ] = ( p − p / i ) ∗ i n v [ p % i ] inv[i]=(p-p/i)*inv[p\% i] inv[i]=(p−p/i)∗inv[p%i]