求乘法逆元

Posted zxz666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求乘法逆元相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

void exgcd(ll a,ll b,ll& d,ll& x,ll& y)
{
    if(!b) { d = a; x = 1; y = 0; }
    else{ exgcd(b, a%b, d, y, x); y -= x*(a/b); }
}

ll inv(ll a, ll p)
{
    ll d, x, y;
    exgcd(a, p, d, x, y);
    return d == 1 ? (x+p)%p : -1;
}

int main()
{
    ll a,p;
    while(1)
    {
        scanf("%lld %lld",&a,&p);
        printf("%lld
",inv(a,p));
    }
}

 

以上是关于求乘法逆元的主要内容,如果未能解决你的问题,请参考以下文章

数论,关于求乘法逆元素

费马小定理 求乘法逆元

51nod 1256 乘法逆元 拓展欧几里得求逆元

素数定理-欧几里得算法-乘法逆元

求乘法逆元

[模板]乘法逆元