Cod sursa(job #3136223)

Utilizator sxdoesnotexistVarga Sergiu sxdoesnotexist Data 5 iunie 2023 17:52:24
Problema Algoritmul lui Euclid extins Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>

void extEuclid(int A,int N,int* x,int* y,int* d) {

    if( N==0 ) {
        (*d)=A;
        (*x)=1;
        (*y)=0;
    }
    else {

        int x0,y0;
        extEuclid(N,A%N,&x0,&y0,d);
        (*y) = x0 - y0*(A/N); 
        (*x) = y0;   
    }
}

int main() {

    int N;
    int inv=0,ins=0;
    int a,b,c;

    FILE* f = fopen("euclid3.in","r");
    FILE* g = fopen("euclid3.out","w");

    if( f==NULL || g==NULL )
        return 0;
    if ( fscanf(f,"%d",&N)!=1 )
        return 0; 

    for(int i=0; i<N; i++) {

        if ( fscanf(f,"%d %d %d",&a,&b,&c)!=3 )
            return 0;

        int d;
        extEuclid(a,b,&inv,&ins,&d);
        
        if( c%d!=0 )
            fprintf(g,"0 0\n");
        else 
            fprintf(g,"%d %d\n", (c/d)*inv, (c/d)*ins );
        
    }
    
    fclose(f);
    fclose(g);
}