Cod sursa(job #478276)

Utilizator szabibibiOrban Szabolcs szabibibi Data 17 august 2010 22:38:24
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <stdio.h>
#include <conio.h>




long t;
long x,y,a,b,c,d;



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


long lnko (long a, long b)
{
    if (b==0) return a;
    long m = a % b;
    a = b;
    b = m;
    return lnko(a,b);
}


void megold(long a, long b, long c, long *x, long *y)
{
    if (c % (d = lnko(a, b))) return;
    xker(a,b,&d,x,y);
    *x *= c/d;
    *y *= c/d;
    return;
}



int main()
{
    FILE *f = fopen ("euclid3.in", "r");
    FILE *g = fopen ("euclid3.out", "w");
    fscanf(f, "%ld", &t);
    for (long i=1;i<=t;i++)
    {
        fscanf (f,"%ld %ld %ld", &a, &b, &c);
        x = y = 0;
        megold (a, b, c, &x, &y);
        fprintf (g, "%ld %ld\n", x, y);
    }
    fclose(f);
    fclose(g);
    return 0;
}