Cod sursa(job #331921)

Utilizator dodgerblueBogdan P. dodgerblue Data 15 iulie 2009 20:29:58
Problema Algoritmul lui Euclid extins Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>
#include<stdlib.h>

void euclid(long int a,long int b, long int *d, long int *x, long int *y)
{
	if(b==0)
	{
		*d=a;
		*x=1;
		*y=0;
	}
	else
	{
		long int x0,y0;
		euclid(b,a%b,d,&x0,&y0);
		*x=y0;
		*y=x0-(a/b)*y0;
	}
}

int main()
{
	FILE *f,*g;
	long int t,a,b,c,i,d,x,y;
	f=fopen("euclid3.in","r");
	g=fopen("euclid3.out","w");
	
	fscanf(f,"%ld",&t);
	for(i=0;i<t;i++)
		{
			fscanf(f,"%ld%ld%ld",&a,&b,&c);
			if(a>b) euclid(a,b,&d,&x,&y);
			else    euclid(b,a,&d,&y,&x);
			if(c%d)  fprintf(g,"0 0\n");
			else fprintf(g,"%ld %ld\n",x*(c/d), y*(c/d));
		}
	
	fclose(f);
	fclose(g);
	return 0;
}