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 t = x;
x = y;
y = t - a/b*y;
return r;
}
/*
扩展欧几里得算法在使用的过程中应该配合gcd使用,
先判定c是不是gcd(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;
}
扩展欧几里算法
最新推荐文章于 2023-12-11 00:31:30 发布