题解 UVA10104 【Euclid Problem】
小学学拓欧真疯了!表示难以看懂,只好套个模板。
给出一点解释:
在欧几里得算法最后一步中,,显然可以发现一组满足。
如果,可以推导出
推导过程:
若, 则
若,则可将看成,即减去若干个 ,所以不会影响其因数。
然后接下来的我不太懂,自行百度
代码:
#include <iostream>
using namespace std;
void exgcd(int a, int b, int& x, int& y)
{
if(!b)
{
x = 1;
y = 0;
return ;
}
exgcd(b, a % b, y, x);
y -= a / b * x;
}
int main()
{
int a, b, x, y;
while(cin >> a >> b)
{
x = y = 0;
exgcd(a, b, x, y);
cout << x << " " << y << " " << a * x + b * y << endl;
}
return 0;
}