Cod sursa(job #1112095)

Utilizator TeOOOVoina Teodora TeOOO Data 19 februarie 2014 13:35:13
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
//Include
#include <stdio.h>
using namespace std;

FILE *in, *out;

//Functii
void euclid(int a, int b, int *div, int *x, int *y);

//Variabile
int num;
int a, b, c;

//Main
int main()
{
	in = fopen("euclid3.in", "rt");
	out = fopen("euclid3.out", "wt");

    fscanf(in,"%d", &num);
    while(num--)
    {
        fscanf(in,"%d%d%d", &a, &b, &c);
        int div, x, y;
        euclid(a, b, &div, &x, &y);
        if(c%div)
            fprintf(out,"0 0\n");
        else fprintf(out,"%d %d\n", x*(c/div), y*(c/div));
    }

	fclose(in);
	fclose(out);
	return 0;
}

void euclid(int a, int b, int *div, int *x, int *y)
{
    if(!b)
    {
        *div = a;
        *x = 1;
        *y = 0;
    }
    else
    {
        int x0, y0;
        euclid(b, a%b, div, &x0, &y0);
        *x = y0;
        *y = x0 - (a/b) * y0;
    }
}