Cod sursa(job #3357359)

Utilizator Alexia_vAlexia Verebeli Alexia_v Data 9 iunie 2026 02:48:57
Problema Algoritmul lui Euclid extins Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include<stdio.h>
#include<stdlib.h>

long long euclid(long long a,long long n,long long *x,long long *y)
{
  if(n==0)
    {
      *x=1;
      *y=0;
      return a;
    }

  long long x1,y1;

  long long d=euclid(n,a%n,&x1,&y1);

  *x=y1;
  *y=x1-(a/n)*y1;

  return d;
}

int main()
{
  FILE *fin=fopen("euclid3.in","r");
  FILE *fout=fopen("euclid3.out","w");

  if (fin == NULL || fout == NULL) {
        perror("Eroare la deschiderea fisierelor");
        return 1;
  }

  int T;

  if(fscanf(fin,"%d",&T)!=1)
    {
      printf("citire incorecta\n");
      return 1;
    }

  for(int i=0;i<T;i++)
    {
      long long a,b,c;
      
      if(fscanf(fin,"%lld %lld %lld",&a,&b,&c)!=3)
      {
	printf("citire incorecta\n");
	return 1;
      }
      long long x,y;

      long long d=euclid(llabs(a),llabs(b),&x,&y);

      if(a<0)
	x=-x;

      if(b<0)
	y=-y;

      if(c%d!=0)
	fprintf(fout," 0 0\n");
      else
	{
	  long long factor=c/d;

	  x=x*factor;
	  y=y*factor;

	  fprintf(fout,"%lld %lld\n",x,y);
	}
    }

  fclose(fin);
  fclose(fout);
  
  return 0;
}