Pagini recente » Cod sursa (job #1289347) | Cod sursa (job #3190888) | Diferente pentru utilizator/atatomir intre reviziile 264 si 72 | Rezultatele filtrării | Cod sursa (job #2723068)
#include <fstream>
using namespace std;
ifstream cin ("euclid3.in");
ofstream cout ("euclid3.out");
pair <int, int> euclid_extins(int a, int b) {
if (b == 0)
return {1, 0};
pair <int, int> aux = euclid_extins(b, a % b);
int x = aux.second;
int y = aux.first - a / b * aux.second;
return {x, y};
}
int cmmdc(int a, int b) {
int r = a % b;
while (r) {
a = b;
b = r;
r = a % b;
}
return b;
}
int main() {
int t, a, b, c;
cin >> t;
while (t--) {
cin >> a >> b >> c;
if (a == 0 && b == 0 || a == 0 && c % b || b == 0 && a % b) {
cout << "0 0\n";
continue;
}
if (a == 0) {
cout << "0 " << c / b << '\n';
continue;
}
if (b == 0) {
cout << c / a << " 0\n";
continue;
}
int d = cmmdc(a, b);
if (c % d) {
cout << "0 0\n";
continue;
}
pair <int, int> ans = euclid_extins(a, b);
cout << ans.first * (c / d) << ' ' << ans.second * (c / d) << '\n';
}
return 0;
}