Cod sursa(job #757149)

Utilizator igsifvevc avb igsi Data 11 iunie 2012 11:34:56
Problema Algoritmul lui Euclid extins Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>

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

void main(void)
{
	FILE *in = fopen("euclid3.in", "r");
	FILE *out = fopen("euclid3.out", "w");
	int t;
	
	for(fscanf(in, "%d", &t); t; --t)
	{
		int a, b, c, d, x, y;
		
		fscanf(in, "%d %d %d", &a, &b, &c);	
		d = gcd(a, b, &x, &y);
		
		if(c % d)
			fprintf(out, "0\n");
		else
		{
			fprintf(out, "%d %d\n", x * (c / d), y * (c / d));
		}
	}
	
	fclose(in);
	fclose(out);
}