题目
源地址:
http://codeforces.com/problemset/problem/7/C
理解
扩展欧几里得算法的模板题。 题意很简单,给定方程Ax + By + C = 0。要求满足该方程的两个整数解x,y。 通过简单的变形之后就可以得到x = x*(-C/gcd(A,B)) , y = y*(-C/gcd(A,B))。
代码
ll a,b,c,d,x,y;
void ex_gcd(ll a, ll b, ll& d,ll& x, ll& y)
{
if(!b)
{
d=a;
x=1;
y=0;
}
else
{
ex_gcd(b,a%b,d,y,x);
y -= x*(a/b);
}
}
int main(int argc, char const *argv[])
{
cin >> a >> b >> c;
ex_gcd(a,b,d,x,y);
if(c%d != 0)
puts("-1");
else
cout << -x*(c/d) << " " << -y*(c/d) << endl;
return 0;
}
更新日志
- 2014年11月19日 已AC。