Cod sursa(job #2378015)

Utilizator bulancea_melutuBulancea Melutu-Iulian bulancea_melutu Data 11 martie 2019 16:12:36
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include "stdio.h"

void eea(int a, int b, int *x, int *y, int *d)
{
    int vq[32];
    //int vr[32];
    int q, r;
    int n = 0;
    while(b != 0) {
        r = a % b;
        q = a / b;
        //vr[n] = r;
        vq[n++] = q;

        a = b;
        b = r;
    }

    int alpha = -vq[n - 2];
    int beta = 1;
    for(int i = n - 3; i >= 0; i--) {
        int tmp = beta;
        beta = alpha - beta * vq[i];
        alpha = tmp;
    }

    *x = alpha;
    *y = beta;
    *d = a;
}

int main()
{
    int T;
    int a, b, c;
    int x, y, d;

    FILE *inFile = fopen("euclid3.in", "r");
    FILE *outFile = fopen("euclid3.out", "w");

    fscanf(inFile, "%d", &T);

    for(int i = 0; i < T; i++) {
        fscanf(inFile, "%d", &a);
        fscanf(inFile, "%d", &b);
        fscanf(inFile, "%d", &c);

        eea(a, b, &x, &y, &d);
        
        if(c % d == 0) {
            x *= c / d;
            y *= c / d;
            fprintf(outFile, "%d %d\n", x, y);
        } else {
            fprintf(outFile, "0 0\n");
        }
    }

    fclose(inFile);
    fclose(outFile);

    return 0;
}