Cod sursa(job #2462925)

Utilizator ArkinyStoica Alex Arkiny Data 28 septembrie 2019 00:55:03
Problema Algoritmul lui Euclid extins Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#include<algorithm>
#include<string.h>
#include<string>
#include<math.h>
#include<iostream>
#include<queue>
#include<bitset>
#include<set>
#include<map>
using namespace std;

ifstream in("euclid3.in");
ofstream out("euclid3.out");

int gcd(int x, int y)
{
	int  r = x%y;

	while (y != 0)
	{
		r = x % y;

		x = y;
		y = r;
	
	}

	return x;
}

void euclid_ext(int a, int b, int &x, int &y)
{
	int r = a % b;
	
	if (r != 0)
	{
		int x0, y0;
		euclid_ext(b, a%b, x0, y0);

		x = y0;

		y =x0 - (a/b)*y0;

	}
	else
	{
		x = 0;
		y = 1;
		return;
	}

}

int main()
{
	int n;

	in >> n;

	for (int i = 1; i <= n; ++i)
	{
		int a, b, c;

		in >> a >> b >> c;

		int g = gcd(a, b);

		if (c % g != 0)
		{
			out << "0 0\n";
		}
		else
		{
			int x0, y0;

			euclid_ext(a, b, x0, y0);

			out << x0 * (c/g) << " " << y0*(c/g) << "\n";
		}


	}


	return 0;
}