Cod sursa(job #2513610)

Utilizator cyg_TheoPruteanu Theodor cyg_Theo Data 23 decembrie 2019 15:19:57
Problema Algoritmul lui Euclid extins Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <cstdio>

using namespace std;

int euclid(int a,int b){
	int r;
	while(b){
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}

int diophantine(int a,int b,int &x,int &y){
	if(b==0){
		x=1;
		y=0;
		return a;
	}
	int x0,y0;
	int d=diophantine(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);

	int n,a,b,c;
	scanf("%d",&n);

	for(int t=1;t<=n;++t){
		scanf("%d%d%d",&a,&b,&c);

		int d=euclid(a,b);
		
		if(c%d==0){
			int x,y;
			d=diophantine(a,b,x,y);
			printf("%d %d\n",x*c/d,y*c/d);
		}else
			printf("0 0\n");
	}
	return 0;
}