#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
long euclid(long a, long b, long* coef_a, long* coef_b)//euclid pentru a si b
{
if(b==0)
{
*coef_a=1;//coeficientul lui a
*coef_b=0;//coeficientul lui b
return a;
}
long coef_a_temp,coef_b_temp;
long cmmdc=euclid(b,a%b,&coef_a_temp,&coef_b_temp);
*coef_a=coef_b_temp;
*coef_b=coef_a_temp-(a/b)*coef_b_temp;
return cmmdc;
}
int main(void)
{
uint8_t t;
FILE *fin=fopen("euclid3.in","r");
FILE *fout=fopen("euclid3.out","w");
if(fin==NULL)//verificam deschiderea fisierelor
{
perror("Eroare la deschiderea fisierului de citire.\n");
exit(1);
}
if(fout==NULL)
{
perror("Eroare la deschiderea fisierului de scriere.\n");
exit(1);
}
if((fscanf(fin,"%hhd",&t))!=1)
{
perror("Eroare la citirea din fisier.\n");
exit(1);
}
while(t--)
{
long a,b,c;
if(fscanf(fin,"%ld %ld %ld",&a,&b,&c)!=3)
{
perror("Eroare la citirea din fisier.\n");
exit(1);
}
long x,y;
long d=euclid(a,b,&x,&y);//aplicam euclid pt cei 2 coeficienti a si b
if (c%d!=0)
{
fprintf(fout,"0 0\n");
}
else
{
x=x*c/d;
y=y*c/d;
fprintf(fout,"%ld %ld\n",x,y);
}
}
if(fclose(fin)!=0)//verificam inchiderea fisierelor
{
perror("Eroare la inchiderea fisierului de citire.\n");
exit(1);
}
if(fclose(fout)!=0)
{
perror("Eroare la inchiderea fisierului de scriere.\n");
exit(1);
}
return 0;
}