Cod sursa(job #2740344)

Utilizator redstonegamer22Andrei Ion redstonegamer22 Data 12 aprilie 2021 17:39:24
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

#ifndef LOCAL
    
ifstream in("euclid3.in");
ofstream out("euclid3.out");

#define cin in
#define cout out

#endif //LOCAL

pair<int, int> ee(int a, int b, int c)
{
    if(a == 0)
        return make_pair(0, c / b);
    if(b == 0)
        return make_pair(c / a, 0);

    if(a > b)
    {
        auto ret = ee(a % b, b, c);
        return make_pair(ret.first, ret.second - ret.first * (a / b));
    }
    else
    {
        auto ret = ee(a, b % a, c);
        return make_pair(ret.first - ret.second * (b / a), ret.second);
    }
}

void solve()
{
    int a, b, c;
    cin >> a >> b >> c;
    int sa = (a < 0) ? (-1) : (1);
    int sb = (b < 0) ? (-1) : (1);
    int sc = (c < 0) ? (-1) : (1);

    a *= sa;
    b *= sb;
    c *= sc;

    auto ret = ee(a, b, c);
    if(c % __gcd(a, b) != 0)
        cout << "0 0\n";
    else
        cout << sc * sa * ret.first << " " << sc * sb * ret.second << '\n';
}

int main()
{
    int t; cin >> t;
    while(t--)
        solve();
}