您的位置:首页 > 其它

逆元模板

2016-06-19 15:08 260 查看
long long extend_gcd(long long a, long long b, long long &x, long long &y) {
    if(a == 0 && b == 0) return -1;
    if(b == 0) {x = 1; y = 0; return a;}
    long long d = extend_gcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}
long long mod_rev(long long a, long long n) {
    long long x, y;
    long long d = extend_gcd(a, n, x, y);
    if(d == 1) return (x % n + n) % n;
    else return -1;
}

第二种

int qmul(int a,int b){
int ans=1;
a%=p;
for(;b;b>>=1,a=a*a%p)if(b&1)
ans=ans*a%p;
return ans;
}
int inv(int x){
return qmul(x,p-2);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  逆元 模板