Cod sursa(job #3298975)

Utilizator robertcd29Chira Robert-Denis robertcd29 Data 3 iunie 2025 16:11:14
Problema Algoritmul lui Euclid extins Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>
#include <stdlib.h>

int euclid(int a, int b, int *x, int *y)
{
    if (b == 0) {
        *x = 1;
        *y = 0;
        return a;
    }
    int x1, y1;
    int d = euclid(b, a % b, &x1, &y1);
    *x = y1;
    *y = x1 - (a / b) * y1;
    return d;
}

int main(void)
{
    FILE *fin = NULL;
    FILE *fout = NULL;
    if ((fin = fopen("euclid3.in", "r")) == NULL) {
        fprintf(stderr, "Eroare la deschidere\n");
        return 1;
    }
    if ((fout = fopen("euclid3.out", "w")) == NULL) {
        fprintf(stderr, "Eroare la deschidere\n");
        fclose(fin);
        return 1;
    }

    int a, b, c , T;
    fscanf(fin, "%d", &T);
    for(int i = 0; i < T; i++) {
        fscanf(fin, "%d %d %d", &a, &b, &c);
        int x, y;
        int d = euclid(a, b, &x, &y);
        if (c % d != 0) {
            fprintf(fout, "0 0\n");
        } else {
            x *= c / d;
            y *= c / d;
            fprintf(fout, "%d %d\n", x, y);
        }
    }

    fclose(fin);
    fclose(fout);


    return 0;
}