Cod sursa(job #394071)

Utilizator nandoLicker Nandor nando Data 10 februarie 2010 14:44:07
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>

#define MAX 8192
char buf[MAX];
unsigned ptr=0;
FILE* fin=fopen("euclid2.in","rb");
FILE* fout=fopen("euclid2.out","w");

inline int getInt(){
	while(buf[ptr]<'0'||'9'<buf[ptr])
		if(++ptr>=MAX)
			fread(buf,1,MAX,fin),ptr=0;
	int nr=0;
	while('0'<=buf[ptr]&&buf[ptr]<='9'){
		nr=nr*10+buf[ptr]-'0';
		if(++ptr>=MAX)
			fread(buf,1,MAX,fin),ptr=0;
	}
	return nr;
}
int euclid(int a,int b,int& x,int& y){
	if(b==0){
		x=1;
		y=0;
		return a;
	}else{
		int x0,y0,d;
		d=euclid(b,a%b,x0,y0);
		y=x0-(a/b)*y0;
		x=y0;
		return d;
	}
}
int main(){
	fread(buf,1,MAX,fin);
	int a,b,c,d,x,y,N=getInt();
	for(int i=0;i<N;i++){
		a=getInt(),b=getInt(),c=getInt();
		d=euclid(a,b,x,y);
		if(c%d==0){
			fprintf(fout,"%d %d\n",x*(c/d),y*(c/d));
		}else{
			fprintf(fout,"0 0\n");
		}
	}
	fclose(fin);
	fclose(fout);
}