Cod sursa(job #900256)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 28 februarie 2013 18:35:44
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <cstdio>

#define ll long long

ll A, N, invers, vaux;

inline void Euclid( ll &X, ll &Y, ll a, ll b )
{
	if( !b )
		X = 1, Y = 0;
	else
	{
		Euclid( X, Y, b, a%b );
		ll aux = X;
		X = Y;
		Y = aux - Y*(a / b);
	}
}

int main()
{
	freopen("inversmodular.in", "r", stdin);
	freopen("inversmodular.out", "w", stdout);
	
	scanf("%lld%lld", &A, &N);
	Euclid( invers, vaux, A, N );
	
	if( invers <= 0 )
		invers = N + invers%N;
	printf("%lld\n", invers);
	
	return 0;
}