码迷,mamicode.com
首页 > 其他好文 > 详细

几种求逆元的方法

时间:2018-02-23 22:11:24      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:blog   int   amp   费马小定理   exgcd   快速幂   pos   div   快速   

一, 扩展欧几里得

 1 void exgcd(int a,int b,int &x,int &y)
 2 {
 3     if(b==0)
 4     {
 5         x=1;y=0;return;
 6     }
 7     exgcd(b,a%b,x,y);
 8     swap(x,y);
 9     y=y-a/b*x;
10 }
11 //a在%b意义下的逆元
12 //a*x+b*y=1的解->要求a与b互质才有解 

二,费马小定理求逆元

要求:模数p为质数

费马小定理:a^(p-1)=1(mod p) 
那么a^(p-2)=a^-1(mod p) 

也就是说a的逆元为a^(p-2)

直接快速幂求逆元

三:快速求出多个数(1-n)的逆元

O(n)递推

1  inv[1]=1;
2     for(int i=2;i<=n;++i)
3        inv[i]=(ll)(p-p/i)*(ll)inv[p%i]%p;
4     

 

 

几种求逆元的方法

标签:blog   int   amp   费马小定理   exgcd   快速幂   pos   div   快速   

原文地址:https://www.cnblogs.com/adelalove/p/8463475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!