Cod sursa(job #2416140)

Utilizator carriedawayIoana Dragos carriedaway Data 26 aprilie 2019 23:28:13
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int cmmdc(int a, int b)
{
	int r;
	while (b != 0)
	{
		r = a % b;
		a = b; b = r;
	}
	return a;
}

void euclid(int a, int b, int* d, int* x, int* y)
{
	if (b == 0) {
		*d = a;
		*x = 1;
		*y = 0;
	}
	else {
		int x0, y0;
		euclid(b, a % b, d, &x0, &y0);
		*x = y0;
		*y = x0 - (a / b) * y0;
	}
}
int main()
{
	int nr;
	int a, b,c;
	FILE* fp = fopen("euclid3.in", "r");
	FILE* fout=fopen("euclid3.out", "w");
	if (fscanf(fp, "%d", &nr) !=0)
	{
		for (int i = 0; i < nr; i++)
		{
			if (fscanf(fp, "%d %d %d", &a, &b, &c) != 0)
			{
				int d, x, y;
				euclid(a, b, &d, &x, &y);
				if (c % d)
					fprintf(fout, "0 0\n");
				else
				{
					fprintf(fout, "%d %d\n", x * (c / d), y * (c / d));
				}
			}
		}
	}
	fclose(fp);
	fclose(fout);
	return 0;
}