拓展欧几里得求乘法逆元(模板)

据说比快速幂快,就是求ax+by=1的解。

代码

#include <cstdio>
#include <cmath>
#define ll long long
using namespace std;

int n;
ll p;

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

int main()
{
    scanf("%d%lld",&n,&p);
    for (int i=1;i<=n;i++)
    {
        ll x,y;
        exgcd(i,p,x,y); 
        printf("%lld\n",(x%p+p)%p);
    } 
}

猜你喜欢

转载自blog.csdn.net/zhanghaoxian1/article/details/79274704