逆元小结

\(p\) 为素数且 \(a,p\) 互素时

根据费马小定理,就是 \(a^{p-2}\)

平凡的情况

\(ax \equiv 1 \pmod p\)

\(1\)\(n\)

对于每个 \(i\),有 \(p=ki+r\)
\(ki+r \equiv 0 \pmod p \rightarrow kr^{-1} +i^{-1} \equiv 0 \pmod p\)
\(i^{-1} \equiv -kr^{-1} \equiv -\lfloor p/i \rfloor (p \bmod i)^{-1} \pmod p\)

\(1!\)\(n!\)

先费马小定理求 \((n!)^{-1}\)
\((i!)^{-1} \equiv 1/i! \equiv 1/(i+1)! \times (i+1) \equiv ((i+1)!)^{-1} \times (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;
posted @ 2018-03-08 19:32  poorpool  阅读(136)  评论(0)    收藏  举报