1. 程式人生 > >線性求逆元及其過程

線性求逆元及其過程

寫在前面

連續兩天考了求逆元。。。。。。所以想著寫一篇關於線性求逆元的部落格。。

先給程式:

inv[1]=1;
for(int i=2;i<=n;++i)
  inv[i]=MOD-(long long)MOD/i*inv[MOD%i]%MOD;

然後一波推導:

我們要求i在模p意義下的逆元inv[i],那麼我們就設ki+r=p,所以ki+r\equiv0(mod p)。

移項可以得到:r\equiv-ki(mod p)。

兩邊同時除以ir,就可以得到這個式子:

\frac{1}{i}\ \equiv \frac{-k}{r}(mod p)

那麼i分之一就是i在模p意義下的逆元,r分之一就是r在模p意義下的逆元。

變成這個式子:inv[i]\equiv-k*inv[r](mod p)。

因為r<i,所以r=p%i,式子變為inv[i]\equiv-k*inv[p%i](mod p)。

右邊加上一個p:inv[i]=p-k*inv[p%i],k化為p/i(向下取整了所以不考慮r),最後inv[i]就化為了p-p/i*inv[p%i],就是上面的遞推式。證畢。

PS:如果有紕漏之處請dalao指出!蒟蒻馬上修正!