线性求逆元及其过程
写在前面
连续两天考了求逆元。。。。。。所以想着写一篇关于线性求逆元的博客。。
先给程序:
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+r0(mod p)。
移项可以得到:r-ki(mod p)。
两边同时除以ir,就可以得到这个式子:
(mod p)
那么i分之一就是i在模p意义下的逆元,r分之一就是r在模p意义下的逆元。
变成这个式子:inv[i]-k*inv[r](mod p)。
因为r<i,所以r=p%i,式子变为inv[i]-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指出!蒟蒻马上修正!