Cod sursa(job #401610)

Utilizator TrumpCardPopescu Silviu TrumpCard Data 22 februarie 2010 22:59:16
Problema Algoritmul lui Euclid extins Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
void euclid(int a, int b, int *d, int *x, int *y)
{
    if(b == 0) {
        *x = 1;
        *y = 0;
        *d =a;
    }
    else{
        int x0, y0;
        euclid(b, a%b, d, &x0, &y0);
        *x = y0;
        *y = x0 - (a/b) * y0;

    }
}
int main()
{
    FILE *f1 = fopen("euclid3.in", "r");
    FILE *f2 = fopen("euclid3.out", "w");
    int T, i, a, b, c, d, x, y;
    fscanf(f1, "%d", &T);
    for(i = 0; i < T; i++) {
        fscanf(f1, "%d%d%d", &a, &b, &c);
        euclid(a, b, &d, &x, &y);
        if (c%d !=0) {
            x = 0;
            y = 0;
        }
        else {
            x = x * (c/d);
            y = y * (c/d);
        }
        fprintf(f2, "%d %d\n", x, y);
    }
    fclose(f1);
    fclose(f2);
    return 0;
}