Cod sursa(job #645240)

Utilizator johnny2008Diaconu Ion johnny2008 Data 8 decembrie 2011 21:20:13
Problema Algoritmul lui Euclid extins Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
#include<iostream>
using namespace std;
int euclid(int a, int b)
{
	int c;
	while (b) {
		c = a % b;
		a = b;
		b = c;
	}
	return a;
}
int t,a,b,c;
inline int gcd( int A, int B, int &X, int &Y )
{
	if (B == 0)
	{
		X = 1;
		Y = 0;
		return A;
	}
	int X0, Y0, D;
	D = gcd( B, A % B, X0, Y0 );
	X = Y0;
	Y = X0 - (A / B) * Y0;
	return D;
}
void euclidext(int a,int b,int &x,int &y){
	if( b==0){
		x=1;
		y=0;
	}
	else{
		int x0,y0;
		euclidext(b, a % b,  x0, y0);
		x = y0;
		y = x0 - (a / b)*y0;
	}
}
int main(){
	ifstream f("euclid3.in");
	ofstream g("euclid3.out");
	f>>t;
	int i;
	for(i=1;i<=t;i++){
		f>>a>>b>>c;
		int d,x,y;
		d=euclid(a,b);
		
		if(c%d!=0){
			g<<"0 0\n";
		}
		else{
			euclidext(a,b,x,y);
			
			g<<x*c/d<<" "<<y*c/d<<'\n';
		}
	}
	return 0;
}