线性求逆元

前几天我的指导老师给了我一个提高组的考纲,看了看发现数论缺了一大块,一波补习学会(背过)了费马小定理的结论,然后根据结论开始求逆元

做的就是这个题

信心满满的提交然后挂了

然后跟随某个大佬学了学如何线性的求逆元(感觉别的大佬们讲的都好难懂)

然后我来再讲一遍(帮助理解)

首先我们要求i的逆元,我们定义为inv[i],现在定义k和t,ki+r0(mod p)

然后我们移个项:r-ki(mod p)

然后等式两边同时除以ri

就会变成:i分之1r分之-k(mod p)

我们知道i分之1等于i的逆元

还知道r分之1等于r的逆元

那么整理一下可知:inv[i]-k*inv[r](mod p)

而且我们还知道r是小于i的,所以r=p%i

再整理一下:inv[i]-k*inv[p%i](mod p)

我们还知道k*i+r0(mod p)

所以k就是p/i,然后我们根据c++里%的特点,再让他强行转正,加一个p

最后一次整理inv[i]=(p-p/i)*inv[p%i]%p

然后经过这一波分析,我们得到了公式:inv[i]=(p-p/i)*inv[p%i]%p

膜拜教会我的大佬,贴上原博客地址

posted @ 2021-03-04 15:28  lichangjian  阅读(366)  评论(0编辑  收藏  举报