Cod sursa(job #2762882)

Utilizator Teodor_AxinteAxinte Teodor-Ionut Teodor_Axinte Data 9 iulie 2021 19:19:51
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <iostream>


using namespace std;

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


int euclid_ext(int a, int b,int &x, int &y) //ax + by = (a,b)
{
    if(b==0)   // (a*1 + b*0 == a)
    {
        x=1;
        y=0;
        return a;
    }
    else
    {
        int x0,y0,d;
        d=euclid_ext(b,a%b,x0,y0);
        x=y0;
        y=x0-(a/b)*y0;
        return d;
    }

}

void euclid_ext(int a, int b, int *d, int *x, int *y)
{
    if(b==0)
    {
        *d=a;
        *x=1;
        *y=0;
    }
    else
    {
        int x0,y0;
        euclid_ext(b,a%b,d,&x0,&y0);
        *x = y0;
        *y = x0-(a/b)*y0;
    }
}

int n,a,b,c;

int main()
{
    fin>>n;
    for(;n;n--)
    {
        fin>>a>>b>>c;
        int x,y,d;

        euclid_ext(a,b,&d,&x,&y);
        /*if(c%d==0)
            fout<<x*(c/d)<<" "<<y*(c/d)<<'\n';
        else
            fout<<0<<" "<<0<<'\n';
        */

        if(c%d!=0)
            fout<<"0 0\n";
        else
            fout<< x*(c/d)<<" "<<y*(c/d)<<'\n';

        cout<<d<<" "<<endl;
    }
    return 0;
}