Cod sursa(job #488164)

Utilizator snycwingsnycwing snycwing Data 27 septembrie 2010 21:11:23
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>

int a,b,c,x,y,i,T,d;

int cmmdc(int a,int b)
{
	int r=-1;
	if(b==0) return a;
	while(r!=0)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}

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

int main()
{
	freopen("euclid3.in","r",stdin);
	freopen("euclid3.out","w",stdout);

	scanf("%d",&T);
	for(i=1;i<=T;i++)
	{
		scanf("%d%d%d",&a,&b,&c);
		x=0;
		y=0;
		d=cmmdc(a,b);
		if(d!=0)
			if(c%d!=0) printf("0 0\n");
			else
			{
				extins(a,b,x,y);
				printf("%d %d\n",x*(c/d),y*(c/d));
			}
		else printf("0 0\n");
	}

	return 0;
}