Cod sursa(job #2088660)

Utilizator severutBogdan Sever-Cristian severut Data 15 decembrie 2017 17:33:33
Problema Algoritmul lui Euclid extins Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long long cmmdc(long long a,long long b)
{
    long long aux;
    while (b!=0)
    {
        aux=a%b;
        a=b;
        b=aux;
    }
    return a;
}
int main()
{
    long long T,a,x,b,y,c,d,n,m,im,r1,r2;
    fin>>T;
    for (int i=1;i<=T;i++)
    {
        /// A*X+B*Y=C
        /// N*X+M*Y=C
        fin>>a>>b>>c;
        if (a==0||b==0)
        {
            y=1;
            d=a+b;
            if (d!=0&&c%d==0)
                fout<<c/d<<" "<<c/d;
            else
                fout<<0<<" "<<0;
        }
        else
        {
            d=cmmdc(a,b);
            n=a/d;
            m=b/d;
            im=c/d;
            if (c%d==0)
            {
                if (n<m)
                {
                    x=0;
                    while ((1-n*x)%m!=0)
                        x++;
                    y=(1-n*x)/m;
                    fout<<x*im<<" "<<y*im;
                }
                else
                {
                    y=0;
                    while ((1-m*y)%n!=0)
                        y++;
                    x=(1-m*y)/n;
                    fout<<x*im<<" "<<y*im;
                }

            }
            else
                fout<<0<<" "<<0;
        }
        fout<<'\n';
    }
    return 0;
}