Cod sursa(job #1988215)

Utilizator Silviu.Stancioiu@gmail.comSilviu Stancioiu [email protected] Data 2 iunie 2017 14:05:35
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <stdio.h>

FILE* fin;
FILE* fout;

int t;

void LoadFiles()
{
	fin = fopen("euclid3.in", "r");
	fout = fopen("euclid3.out", "w");

	return;
}

void ReadLine(int& a, int& b, int& c)
{
	fscanf(fin, "%d %d %d", &a, &b, &c);
	return;
}

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;
}

inline void WriteOutput(int x, int y)
{
	fprintf(fout, "%d %d\n", x, y);
	return;
}

void Solve()
{
	int a, b, c;
	int d;
	int x, y;
	fscanf(fin, "%d", &t);

	for (int i = 0; i < t; i++)
	{
		ReadLine(a, b, c);
		d = GCD(a, b, x, y);

		if (c % d)
		{
			WriteOutput(0, 0);
		}
		else
		{
			WriteOutput(x * (c / d), y * (c / d));
		}
	}

	return;
}

void CloseFiles()
{
	fclose(fin);
	fclose(fout);
	return;
}

int main(void)
{
	LoadFiles();
	Solve();
	CloseFiles();

	return 0;
}