Cod sursa(job #144003)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 27 februarie 2008 01:30:34
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
long int a[20],b[20],c,x[20],y[20],i,t,nt,sa,sb,n;
int main()
{
	FILE *f,*g;f=fopen("euclid3.in","r");g=fopen("euclid3.out","w");
	fscanf(f,"%ld",&t);
	for(nt=1;nt<=t;nt++)
	{ fscanf(f,"%ld%ld%ld",&a[1],&b[1],&c);
	  if(c<0){a[1]=-a[1];b[1]=-b[1];c=-c;}
	  sa=(a[1]>=0)?1:(-1);a[1]*=sa;sb=(b[1]>=0)?1:(-1);b[1]*=sb;
	  i=1;
	  while(b[i]){a[i+1]=b[i];b[i+1]=a[i]%b[i];i++;}
	  n=i;
	  if(c%a[n]){x[1]=0;y[1]=0;}
	  else
	  { x[n]=c/a[n];y[n]=0;
	    for(i=n-1;i>=1;i--)
	    { x[i]=y[i+1];y[i]=x[i+1]-(a[i]/b[i])*y[i+1];}
	  }
	  x[1]*=sa;y[1]*=sb;
	  fprintf(g,"%ld %ld\n",x[1],y[1]);
	}
	fcloseall();
	return 0;
}