Cod sursa(job #3358363)

Utilizator VasiesAnaMariaVasies Ana-Maria VasiesAnaMaria Data 16 iunie 2026 15:00:47
Problema Algoritmul lui Euclid extins Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.45 kb
#include<stdio.h>
#include<stdlib.h>

long long inv_mod(long long a, long long n, long long *x, long long *y)
{
    if(n==0)
    {
        *x=1;
        *y=0;
        return a;
    }
    else
    {
        long long x1, y1,d;
        d=inv_mod(n, a % n, &x1, &y1);
        *x = y1;
        *y = x1 - (a / n) * y1;
        return d;
    }
}

int main(void)
{
    FILE* f,*g;
    int T;
    if((f=fopen("euclid3.in","r"))==NULL)
    {
        printf("fisierul de intrare nu a putut fi deschis\n");
        exit(EXIT_FAILURE);
    }
    if((g=fopen("euclid3.out","w"))==NULL)
    {
        printf("fisierul de iesire nu a putut fi deschis\n");
        exit(EXIT_FAILURE);
    }
    if(fscanf(f,"%d",&T)!=1)
    {
        printf("citire din fisier nereusita\n");
        exit(EXIT_FAILURE);
    }
    while(T)
    {
        long long a,b,c,d,x,y;
        if(fscanf(f,"%lld %lld %lld",&a,&b,&c)!=3)
        {
            printf("citire din fisier nereusita\n");
            exit(EXIT_FAILURE);
        }
        d=inv_mod(a,b,&x,&y);
        if(c%d)
            fprintf(g,"0 0\n");
        else
            fprintf(g,"%lld %lld\n",x*(c/d),y*(c/d));
        T--;
    }
    if(fclose(f)<0)
    {
        printf("fisierul de intrare nu a putut fi inchis\n");
        exit(EXIT_FAILURE);
    }
    if(fclose(g)<0)
    {
        printf("fisierul de iesire nu a putut fi inchis\n");
        exit(EXIT_FAILURE);
    }
    return 0;
}