Cod sursa(job #2311707)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 3 ianuarie 2019 16:50:04
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<cstdio>
#define L 2000000
int a,b,c,x,y,d,i=-1,k;
char t,p[L];
int A()
{
  	int s=0,m=1;
  	if(p[i+1]=='-')
  		m=-1,i++;
  	for(i++;p[i]>='0';i++)
  		s=s*10+p[i]-48;
  	return s*m;
}
void S(int b,char c)
{
	char e[100];
	int j;
	for(j=0;b;b/=10,j++)
		e[j]=b%10+48;
	for(j--;j>=0;j--)
		p[k++]=e[j];
	p[k++]=c;
}
int W(int a,int b,int &x,int &y)
{
    int p,r,q;
    if(!b)
    {
        x=1,y=0;
        return a;
    }
    q=W(b,a%b,p,r),x=r,y=p-a/b*r;
    return q;
}
int main()
{
    freopen("euclid3.in","r",stdin),freopen("euclid3.out","w",stdout),fread(p,1,L,stdin),t=A();
    while(t--)
    {
        a=A(),b=A(),c=A(),d=W(a,b,x,y);
        if(c%d)
        	S(0,' '),S(0,'\n');
        else
        	S(x*(c/d),' '),S(y*(c/d),'\n');
	}
	fwrite(p,1,k,stdout);
}