gcd 与 扩gcd 总结

gcd 定理的证明:

模板:

ll gcd(ll a,ll b)
{
    if(b == 0) return a;
    else return gcd(b,a%b);
}

 扩gcd证明:

模板:

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

解题规律:

首先化为 ax+by = c 的形式,一般采用增加常量的方式,然后把a,b,x,y 代入extgcd 模板,返回的是d = gcd(a,b)

得到的x 是 ax+by = gcd(a,b)=d 的一个解,这时候两边同时乘以c/d就能得到解x’ = x * c/d

原文地址:https://www.cnblogs.com/cunyusup/p/8410894.html