Pagini recente » Borderou de evaluare (job #2288892) | Cod sursa (job #2112890) | Cod sursa (job #2792812) | Cod sursa (job #854332) | Cod sursa (job #2857694)
#include <tuple>
#include <fstream>
#include <iostream>
#include <cstdlib>
std::tuple<int, int, int> cmmdcExtins(int a, int 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) {
int 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<1>(r));
}
int main() {
std::fstream in;
in.open("euclid3.in", std::ios::in);
int 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);
}
int a, b, c;
for (; M && in >> a >> b >> c; --M) {
auto extins = cmmdcExtins(a, b);
int x = std::get<0>(extins);
int y = std::get<1>(extins);
int cmmdc = std::get<2>(extins);
if (c % cmmdc != 0) {
out << "0 0\n";
}
else {
out << x << " " << y << "\n";
}
}
in.close();
out.close();
exit(EXIT_SUCCESS);
}