扩展欧几里得板子

ax+by=c,求出其中一组解x y

int exgcd(int a,int b,int &x,int &y)//扩展欧几里得算法
{
    
    
    if(b==0)
    {
    
    
        x=1;y=0;
        return a;  //到达递归边界开始向上一层返回
    }
    int r=exgcd(b,a%b,x,y);
    int temp=y;    //把x y变成上一层的
    y=x-(a/b)*y;
    x=temp;
    return r;     //得到a b的最大公因数
}

bool linear_equation(int a,int b,int c,int &x,int &y)
{
    
    
    int d=exgcd(a,b,x,y);
    if(c%d)
        return false;
    int k=c/d;
    x*=k; y*=k;    //求得的只是其中一组解
    return true;
}

转载于https://blog.csdn.net/destiny1507/article/details/81750874
https://blog.csdn.net/syz201558503103/article/details/76512144

猜你喜欢

转载自blog.csdn.net/asbbv/article/details/115217650