专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
线性O(n)求1~n逆元
2019-04-14 20:01
发布
生成海报
站内文章
/
模拟电子
17532
0
1750
求某个数的逆元,我们可以用log(n)的时间算出来。 但是,如果是求1~n的所有逆元呢?是不是就要用nlog(n)的时间了? 其实我们有一种线性的方法,可以在O(n)的复杂度求出1~n的逆元。 先假设模数y=ax+b 则ax+b
0 (%y) 将两边同时除以x·b (因为你的目的是得到一个形式为
……的式子) 则式子变为
0 拆开得a·
+
0
-a·
因为前面说了y=ax+b 所以a=
,b=(y%x) 将此带入,得:
-
`(y%x)^-1 我们设f[i]表示i的逆元, 则f[i]=(-y/i*f[y%i])%y 按照这个式子递推下去就可以得到1~n的逆元了。 当然也可以用递归的方式用log的时间求出n的逆元。
值得注意的是,因为你求的逆元也是模意义下的,所以原式应转化为f[i]=(y-y/i)*f[y%i]%y ,以此避免出现负数。
Ta的文章
更多
>>
yocto添加层简介
0 个评论
线性O(n)求1~n逆元
0 个评论
洛谷 P4239 【模板】多项式求逆(加强版)任意模数fft
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮