Cod sursa(job #595623)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 13 iunie 2011 13:43:23
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<stdio.h>

#define i64 long long

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

int A,N;

void gcd ( i64 &x, i64 &y , int A, int B ){
	
	if ( !B ){
		x = 1; y = 0;
		return ;
	}
	
	i64 x0,y0;
	gcd ( x0 , y0 , B , A % B );
	x = y0;
	y = x0 - (A / B) * y0;
}

int main () {
	
	fscanf(f,"%d %d",&A,&N);
	
	i64 inv = 0,ins;
	gcd(inv,ins,A,N);
	
	if ( inv <= 0 ){
		inv = N + (inv % N);
	}
	
	fprintf(g,"%lld\n",inv);
	
	fclose(f);
	fclose(g);
	
	return 0;
}