(p) 为素数且 (a,p) 互素时
根据费马小定理,就是 (a^{p-2})。
平凡的情况
解 (ax equiv 1 pmod p)
从 (1) 到 (n) 的
对于每个 (i),有 (p=ki+r)。
(ki+r equiv 0 pmod p
ightarrow kr^{-1} +i^{-1} equiv 0 pmod p)。
(i^{-1} equiv -kr^{-1} equiv -lfloor p/i
floor (p mod i)^{-1} pmod p)
(1!) 到 (n!)
先费马小定理求 ((n!)^{-1})。
((i!)^{-1} equiv 1/i! equiv 1/(i+1)! imes (i+1) equiv ((i+1)!)^{-1} imes (i+1) pmod p)
适用于 (n<p) 时。
所以我比较推崇这种方法:先算 (1 sim n) 的,然后递推乘起来
for(int i=2; i<=n; i++)
ni[i] = (ll)(p-p/i) * ni[p%i] % p;
for(int i=2; i<=n; i++)
ni[i] = (ll)ni[i-1] * ni[i] % p;