http://codeforces.com/problemset/problem/7/C
题目意思很简单,就是在直线Ax+By+C = 0上找一点,并且这个点的横纵坐标必须是整数。
如果这个点存在就输出这个点的坐标,否则就输出-1.
其实就是让解:Ax+By = -C这个方程。用扩展欧几里得做。
AC代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef long long LL;
LL d,x,y;
void extend_gcd(LL a,LL b)
{
if(b == 0)
{
x = 1;
y = 0;
d = a;
return ;
}
extend_gcd(b,a%b);
int temp = x;
x = y;
y = temp-a/b*y;
}
int main()
{
LL A,B,C;
while(cin>>A>>B>>C)
{
extend_gcd(A,B);
if(C%d==0)
{
x = -x*C/d; ///最后答案是-x*C/d是因为直线Ax+By+c=0 ->Ax+By = -c
y = -y*C/d;
cout<<x<<" "<<y<<endl;
}
else
{
cout<<"-1"<<endl;
}
}
return 0;
}