问题
假如有这么个问题:求解3x+7y=50的整数解。怎么办?我只记得在自己的一篇文章里介绍了如何解出ax+by=(a,b), 那么对于今天的问题怎么求解呢?
思路
虽然不知道怎么证明,但是就知道是对的,可以直接拿来用。
我可以直接先求3x+7y=(3, 7)的解,也就是3x+7y=1的解。我们得到x=-2,y=1。然后我们将x和y扩大50/(3, 7)倍,也就是50/1倍,得到x=-2*50, y=1*50。于是我们得到了3x+7y=50的解是-100和50。
代码
#include <iostream>
using namespace std;
int gcdEx(int a, int b, int &x, int &y)
{
if (b == 0)
{
x = 1;
y = 0;
return a;
}
int r = gcdEx(b, a%b, x, y);
int x1 = x, y1 = y;
x = y1;
y = x1 - (a / b) * y1;
return r;
}
int main()
{
int x, y;
int a, b, c;
cin >> a >> b>> c;
int numGcd = gcdEx(a, b, x, y);
cout << c / numGcd * x << " " << c / numGcd * y;
return 0;
}