Pagini recente » Cod sursa (job #2863468) | Cod sursa (job #1357112) | Cod sursa (job #1776643) | Cod sursa (job #627285)
Cod sursa(job #627285)
#include <fstream>
#define abs(a) ( (a) < 0 ? (-a) : (a) )
using namespace std;
int cmmdc(int a,int b) {
if (b == 0) return a;
return cmmdc(b, a % b);
}
int c;
void diofant(int a, int b, int &x, int &y) {
if (c % a == 0) {x = c / a; y = 0;}
else if (c % b == 0) {x = 0; y = c / b;}
else {
int x1, y1;
if (b > a) {
diofant (a, b-a, x1, y1);
x = x1 - y1; y = y1;
}
else {
diofant (b, a-b, x1, y1);
x = y1; y = x1 - y1;
}
}
}
int main() {
ifstream fin ("euclid3.in");
ofstream fout ("euclid3.out");
int T,i;
fin>>T;
for (i = 0; i < T; i++) {
int a, b;
fin>>a>>b>>c;
int d = cmmdc(a, cmmdc(b, c));
a /= d; b /= d; c /= d;
int x, y;
if (cmmdc(abs(a),abs(b)) != 1) fout<<"0 0\n";
else {
if(abs(a) < abs(b)) diofant(abs(b), abs(a), y, x);
else diofant(abs(a), abs(b), x, y);
if(a < 0) x *= -1;
if(b < 0) y *= -1;
fout<<x<<" "<<y<<"\n";
}
}
return 0;
}