Cod sursa(job #2771392)

Utilizator ansalecAlecu Stefan-Iulian ansalec Data 27 august 2021 01:13:11
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <array>
#include <fstream>
#include <iostream>
#include <tuple>

using uint = unsigned int;

int cmmdc_extins(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int x1, y1;
    int d = cmmdc_extins(b, a % b, x1, y1);
    x = y1;
    y = x1 - y1 * (a / b);
    return d;
}
int main() {
  // Deschidem fișierul și în caz de succes, continuăm cu restul
  // operațiilor de citire.
  std::ifstream inFile;
  inFile.open("euclid3.in", std::ios::in);

  if (inFile.is_open()) {
    uint numarDeLinii;
    inFile >> numarDeLinii;
    std::ofstream outFile;
    outFile.open("euclid3.out", std::ios::out);
    if (outFile.is_open()) {
      int a, b, c, x, y;
      for (uint i = 0; i < numarDeLinii; i++) {
          inFile >> a >> b >> c;
          
          int cmmdc = cmmdc_extins(a, b, x, y);
          if (c % cmmdc == 0)
            outFile << x * (c / cmmdc) << " " << y * (c / cmmdc) << '\n';
          else
            outFile << "0 0\n";
      }
      outFile.close();
    } else
      std::cout << "Nu s-a putut scrie in fisier!" << std::endl;
    inFile.close();
  } else
    std::cout << "Nu s-a putut deschide fisierul!" << std::endl;
  return 0;
}