扩展欧几里得算法-->求ax+by=(a,b)最大约数

#include
using namespace std;
typedef long long ll;
int exgcd(int a, int b, int &x,int &y)
{
    if (b != 0)
    {
        int d= exgcd(b, a % b, y, x);
        y -= (a / b) * x;
        return d;
    }
    else
    {
        x = 1; y = 0; return a;
    }

ax+by=m//充分必要条件是m可以被a,b整除-->ak===m(mod b)转换
}

求出一个yx,y后可计算得所有可能解

{

X=Xo-b/d*k;

y=yo+a/d*k;

}k取任意整数

你可能感兴趣的:(算法,c++,数据结构)