Pagini recente » Cod sursa (job #2674447) | Cod sursa (job #2857698) | Monitorul de evaluare | Cod sursa (job #800326) | Cod sursa (job #2857700)
#include <tuple>
#include <fstream>
#include <iostream>
#include <cstdlib>
std::tuple<long long, long long, long long> cmmdcExtins(long long a, long long b) {
auto r = std::make_tuple(a, b);
auto s = std::make_tuple(1, 0);
auto t = std::make_tuple(0, 1);
while (std::get<1>(r) != 0) {
long long quot = std::get<0>(r) / std::get<1>(r);
r = {std::get<1>(r), std::get<0>(r) - quot * std::get<1>(r)};
s = {std::get<1>(s), std::get<0>(s) - quot * std::get<1>(s)};
t = {std::get<1>(t), std::get<0>(t) - quot * std::get<1>(t)};
}
return std::make_tuple(std::get<0>(s), std::get<0>(t), std::get<0>(r));
}
int main() {
std::fstream in;
in.open("euclid3.in", std::ios::in);
long long M;
if (!in.is_open()) {
std::cerr << "File could not be opened." << std::endl;
exit(EXIT_FAILURE);
}
in >> M;
std::fstream out;
out.open("euclid3.out", std::ios::out);
if (!out.is_open()) {
std::cerr << "File could not be written to." << std::endl;
exit(EXIT_FAILURE);
}
long long a, b, c;
for (; M; --M) {
in >> a >> b >> c;
auto extins = cmmdcExtins(a, b);
long long x = std::get<0>(extins);
long long y = std::get<1>(extins);
long long d = std::get<2>(extins);
if (c % d != 0) {
out << "0 0\n";
}
else {
//std::cout << a << " " << b << " " << c << " " << x << " " << y << " " << d << std::endl;
out << x * c/d << " " << y * c/d << "\n";
}
}
in.close();
out.close();
exit(EXIT_SUCCESS);
}