Cod sursa(job #675861)

Utilizator nautilusCohal Alexandru nautilus Data 8 februarie 2012 13:05:08
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
using namespace std;

int n;

void euclid_extins(int a, int b, int &d, int &x, int &y)
{
 int x2,y2;
 if (a % b == 0)
	{
	 d = b;
	 x = 0;
	 y = 1;
	} else
	{
	 euclid_extins(b,a%b,d,x2,y2);
	 x = y2;
	 y = x2 - y2 * (a / b);
	}
}

void read_solve()
{
 int i,a,b,c,d,x,y,schimbat = 0;
 ifstream fin("euclid3.in");
 ofstream fout("euclid3.out");
 fin>>n;
 for (i=1; i<=n; ++i)
	{
	 fin>>a>>b>>c;
	 if (a == 0 && b == 0)
		 fout<<"0 0"<<'\n'; else
		 {
		  if (b == 0)
			 {
			  swap(a, b);
			  schimbat = 1;
			 }
		  euclid_extins(a, b, d, x, y);
		  if (c % d == 0)
		  	 {
			  x *= c / d;
			  y *= c / d;
			  if (schimbat)
				  swap(x,y);
			  fout<<x<<" "<<y<<'\n';
			 } else
		  fout<<"0 0"<<'\n';
		 }
	}
 fin.close();
 fout.close();
}

int main()
{
 read_solve();
 return 0;
}