Cod sursa(job #601791)

Utilizator Carl896Carl Adam Carl896 Data 7 iulie 2011 21:13:36
Problema Algoritmul lui Euclid extins Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
long x,y;


int cmmdc (int a, int b)
{
	if(a<0) 
		a = -a;
	if(b<0)
		b = -b;

	if(b!=0)
	while(a!=b)
	{
		if(a>b)
			a=a-b;
		else
			b=b-a;
	}
	
	return a;
}


int rezolva_ec(long a, long b, long &d, long &x, long &y)
{
	long a0,b0,x0,y0,r;
	
	if(b==0)
	{
		d = a;
		x = 1;
		y = 0;
		return 1;
	}
	
	r = a % b;
	a0 = b;
	b0 = r;

	rezolva_ec(a0,b0,d,x0,y0);
    
	x=y0;
	y=x0-(a/b)*y0;


	return 1;
}


int main()
{
	int T;
	long a,b,c;
	long d;
	FILE *f,*g;

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