Cod sursa(job #2719974)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 10 martie 2021 14:28:16
Problema Algoritmul lui Euclid extins Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <assert.h>

using namespace std;

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

void euclid_extins(int a,int b,int &x,int &y){
    if(b == 0){
        x = 1;
        y = 0;
        return;
    }

    euclid_extins(b,a % b,x,y);

    int xnou = y;
    int ynou = x - y * (a / b);
    x = xnou;
    y = ynou;
}

int main()
{
    int t;
    in>>t;
    for(int i = 1; i <= t; i++){
        int a,b,c;
        in>>a>>b>>c;
        int d = __gcd(a,b);
        if(c % d != 0){
            out<<0<<" "<<0<<'\n';
        }else{
            int x,y;
            euclid_extins(a,b,x,y);
            x = x * c / d;
            y = y * c / d;
            x -= b / d * 2;
            y += a / d * 2;
            out<<x<<" "<<y<<'\n';
            assert(1ll * a * x + 1ll * b * y == 1ll * c);
        }
    }
    return 0;
}