Cod sursa(job #400635)

Utilizator andreirRoti Andrei andreir Data 21 februarie 2010 18:43:00
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>

long n,i,a,b,c,x,y,d;

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

int main()
{
 freopen("euclid3.in","r",stdin);
 freopen("euclid3.out","w",stdout);
 
 scanf("%ld\n",&n);
 for(i=1;i<=n;++i)
 {
   scanf("%ld %ld %ld\n",&a,&b,&c);
   d=gcd(a,b,x,y);
   if(c%d) printf("0 0\n");
   else printf("%ld %ld\n",x*(c/d),y*(c/d));                 
 }   
    
 return 0;    
}

/*#include<stdio.h>
inline int gcd(int a,int b,int &x,int &y)
{
	if(b==0)
	{
		x=1;
		y=0;
		return a;
	}
	int d,y0,x0;
	d=gcd(b,a%b,y0,x0);
	x=y0;
	y=x0-(a/b)*y0;
	return d;
}
int main()
{
	int T,i,a,b,x,y,d,c;
	freopen("euclid3.in","r",stdin);
	freopen("euclid3.out","w",stdout);
	scanf("%d",&T);
	for(i=1;i<=T;i++)
	{
		scanf("%d %d ",&a,&b);
		d=gcd(a,b,x,y);
		scanf("%d\n",&c);
		if(c%d!=0)
			printf("0 0\n");
		else
			printf("%d %d\n",x*(c/d),y*(c/d));
	}
	return 0;
}*/