Cod sursa(job #3136549)

Utilizator ClaudiuppPopa-Panda Claudiu-Ionut Claudiupp Data 6 iunie 2023 21:42:08
Problema Algoritmul lui Euclid extins Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <stdlib.h>

void euclid(int a, int b, int *x, int *y, int *d)
{
  if (b == 0)
    {
      *d = a;
      *x = 1;
      *y = 0;
    }
  else
    {
      int x0, y0;
      euclid(b, a % b, &x0, &y0, d);
      *x = y0;
      *y = x0 - (a / b) * y0;
    }
}

int main ()
{
  int n = 0;
  
  FILE *file_in = NULL;
  FILE * file_out = NULL;

  if((file_in = fopen("euclid3.in","r")) == NULL)
    {
      perror("EROARE LA DESCHIDEREA FISIERULUI DE CITIRE !");
      exit(-1);
    }

  if((file_out = fopen("euclid3.out","w")) == NULL)
    {
      perror("EROARE LA DESCHIDEREA FISIERULUI DE SCRIERE !");
      exit(-1);
    }

  fscanf(file_in,"%d",&n);

  int i = 0;

  int a = 0;
  int b = 0;
  int c = 0;

  int x = 0;
  int y = 0;


  int d;

  for(i=0;i<n;i++)
    {
      fscanf(file_in,"%d %d %d",&a,&b,&c);

      euclid(a,b,&x,&y,&d);

      if(c%d == 0)
	{
	  fprintf(file_out,"%d %d \n",(c/d)*x,(c/d)*y);
	}
      else
	{
	  fprintf(file_out,"0 0 \n");
	}
    }

  fclose(file_in);
  fclose(file_out);


  return 0;
}