Pagini recente » Monitorul de evaluare | Diferente pentru utilizator/vman intre reviziile 20 si 19 | Atasamentele paginii Profil monitoiul | Atasamentele paginii Profil Lucaxd | Cod sursa (job #3348697)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("euclid3.in");
ofstream fout("euclid3.out");
typedef long long ll;
int t, a, b, c;
/*
ax + by = c
ax0 + by0 = cmmdc(a, b)
b * x0 + (a % b) * y0 = d
a / b = c
a % b = r
b * c + r = a
r = a - b * c
b * x0 + (a - b * c) * y0 = d
a * y0 + b * (x0 - c * y0) = d
*/
int euclid(int a, int b, int &x, int &y)
{
if (b == 0)
{
// ax = a
x = 1;
y = 0;
return a;
}
int x0, y0, d;
d = euclid(b, a % b, x0, y0);
x = y0;
y = x0 - (a / b) * y0;
return d;
}
int main()
{
fin >> t;
while(t--)
{
fin >> a >> b >> c;
int x, y, d;
d = euclid(a,b,x, y);
if (c % d != 0)
x = y = 0;
x *= c / d;
y *= c / d;
fout << x << " " << y << '\n';
}
}