p
p
p是素数
首先
1
−
1
≡
1
m
o
d
p
1^{-1}\equiv1\ mod\;p
1−1≡1 modp
设
p
=
k
i
+
r
(
0
≤
r
<
i
)
p=ki+r(0\le r<i)
p=ki+r(0≤r<i),则
k
i
+
r
≡
0
m
o
d
p
乘
i
−
1
k
+
r
i
−
1
≡
0
m
o
d
p
乘
r
−
1
k
r
−
1
+
i
−
1
≡
0
m
o
d
p
i
−
1
≡
−
k
r
−
1
m
o
d
p
\begin{aligned} ki+r&\equiv0\ mod\; p\quad 乘i^{-1}\\ k+ri^{-1}&\equiv0\ mod\; p\quad乘r^{-1}\\ kr^{-1}+i^{-1}&\equiv0\ mod\; p\\ i^{-1}&\equiv-kr^{-1}\ mod\;p\\ \end{aligned}
ki+rk+ri−1kr−1+i−1i−1≡0 modp乘i−1≡0 modp乘r−1≡0 modp≡−kr−1 modp
inv[1] = 1;
for(int i = 2; i < p; ++ i)
inv[i] = (p - p / i * inv[p % i]) % p;