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

求逆元

时间:2018-12-08 18:27:46      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:turn   欧拉函数   color   bsp   lse   gcd   pre   class   fast   

1 利用扩展欧几里得求解

// ax=1 mod(n)
//返回-1表示不存在逆元
template<class T> T mod_reverse(T a,T n){
    T x,y,d;
    exgcd(a,n,d,x,y);
    if(d==1) return (x%n+n)%n;
    else return -1;
}

 

2 利用欧拉函数 

template<class T> T fast_mod(T a,T b,T Mod){
    a%=mod;
    if(b==0) return 1;
    T ans=1,base=a;
    while(b!=0){
        if(b&1)ans=(ans*base)%Mod;
        base=(base*base)%Mod;
        b>>=1;
    }
    return ans;
}
// ax=1 mod(n) a与n互质
template<class T> T inv(T a,T n){
    return fast_mod(a,n-2,n);
}

 

求逆元

标签:turn   欧拉函数   color   bsp   lse   gcd   pre   class   fast   

原文地址:https://www.cnblogs.com/033000-/p/10088528.html

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