博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
逆元求法(转)
阅读量:6262 次
发布时间:2019-06-22

本文共 568 字,大约阅读时间需要 1 分钟。

转自:  http://hi.baidu.com/pty123/item/06730a080b8523354bc4a356

逆元的几种求法

  定义 a * x = 1(mod p), 求x

1、扩展欧几里德:

   令ax + py = 1

Gcd的本质就是进行迭代,不断缩小范围。

不详细讲。。参考:

 

2、根据费马小定理:若(a,p)互质,且p为质数:

         则 a ^ (p – 1)= 1 (% p)

         所以x = a ^ (p- 2) (% p)

         快速幂求之,查询log(n),常数比扩展欧几里德稍大

 

3、O(n)预处理-O(1)询问

         预处理1-n关于p的逆元:(n < p)

         假设已经预处理了1-i-1的逆元,j的逆元设为F[j]

         令p = x * i –y ( 0 < y < i)

         X* i = y (mod p)

         X* F[y] * i = y * F[y] = 1(mod p)

         所以i的逆元是F[i] = X* F[y]

         这样就可以O(n)的时间预处理了。

 

4、还有一种方法:

逆元函数是完全积性的。。所以求所有质数的逆元即可,预处理复杂度是O(n / logn * logn) = O(n)。。。

 

 参考贾志鹏WC论文

转载于:https://www.cnblogs.com/GO-NO-1/articles/3350586.html

你可能感兴趣的文章
简单的ajax封装
查看>>
PHP初学者必须掌握的10个知识点
查看>>
[Asp.Net]获取客户端ip和mac地址
查看>>
Arcengine设置坐标系(转载)
查看>>
php字符串操作集锦
查看>>
【WPF】C#代码动态改变控件的样式
查看>>
P1115 最大子段和
查看>>
【翻译自mos文章】检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法...
查看>>
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
查看>>
php max_execution_time执行时间问题
查看>>
Hystrix系列-5-Hystrix的资源隔离策略
查看>>
005-ant design -结合echart
查看>>
TCP交互数据流 成块数据流
查看>>
位置+推荐
查看>>
PEP python enhanced prposals
查看>>
retools 0.1 : Python Package Index
查看>>
python模块——logging 这篇讲得比较能懂
查看>>
【017】◀▶ C#学习(九) - ADO.NET
查看>>
English
查看>>
解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)
查看>>