线性求所有数模p的乘法逆元
推理:
假如当前计算的是x在%p意义下的逆元,设$p=kx+y$,则
$\Large kx+y\equiv 0(mod\ p)$
两边同时乘上$x^{-1}y^{-1}$(这里代表逆元)
则方程变为$\Large k*y^{-1}+x^{-1}\equiv 0(mod\ p)$
化简得$\Large x^{-1}\equiv -k*y^{-1}(mod\ p)$
$\Large x^{-1}\equiv -\biggl\lfloor\frac{p}{x}\biggr\rfloor *(p\ mod\ x)^{-1}(mod\ p)$
结果为
$\Large x^{-1}\equiv (p-\biggl\lfloor\frac{p}{x}\biggr\rfloor )*(p\ mod\ x)^{-1}(mod\ p)$
除了1,p mod x一定小于x,它的逆元已经算过,所以可以线性求出逆元
void Inverse(int p,int a[],int n){//线性求<=n的数%p意义下的逆元 a[1]=1; for(int i=2;i<=n;i++){ a[i]=1ll*(p-p/i)*a[p%i]%p; } }