假设我想找到x 和 y 的任何值,使它们满足x . W + y . D = P
这可以通过以下使用扩展欧几里得算法来完成
int exgcd(int a, int b, int &x, int &y)
{
if (b == 0)
{
x = 1;
y = 0;
return a;
}
int g, xi, yi;
g = exgcd(b, a % b, xi, yi);
x = yi;
y = xi - (a / b * yi);
return g;
}
但这只是一些满足方程的随机 x 和 y
假设我添加了一个额外的约束,我想要任何 xyz 这样
x>=0 y>=0 z>=0 and x + y + z = n
我怎样才能有效地(如果可能,请分享代码/伪代码)找到所有这样的 xy 和 z?
我的问题归结为找到任何 x 和 y(使用扩展欧几里得算法)
1) 满足一个线性方程
2) 落在给定范围内