Cod sursa(job #2790191)

Utilizator vlad414141414141Vlad Ionescu vlad414141414141 Data 28 octombrie 2021 16:21:30
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("euclid3.in");
ofstream fout ("euclid3.out");

int n;
long long a, b, c, x, y, q, x0, y0;
vector <pair <int,int>> sol;

int cmmdc(int a, int b)
{
    pair <int,int> t;
    t.first=a;
    t.second=b;
    sol.push_back(t);
    if (b!=0)
        return cmmdc(b,a%b);
    return a;
}

int main()
{
    fin >> n;
    for (int i=0; i<n; ++i)
    {
        fin >> a >> b >> c;
        sol.erase(sol.begin(),sol.end());
        int cm=cmmdc(a,b);
        int m=sol.size();
        if (c%cm==0)
        {
            x0=c/sol[m-1].first;
            y0=0;
            for (int i=m-2; i>=0; --i)
            {
                x=y0;
                y=x0-y0*(sol[i].first/sol[i].second);
                x0=x;
                y0=y;
            }
            fout << x << " " << y << "\n";
        }
        else
            fout << "0 0\n";
    }
    return 0;
}