Cod sursa(job #756651)

Utilizator MciprianMMciprianM MciprianM Data 10 iunie 2012 01:56:58
Problema Invers modular Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>

using namespace std;

long long mod;

void inversModular (long long a, long long n, long long &x, long long &y) {
	long long xx, yy;
	if (a == 0) {
		x = 0;
		y = 1;
		return;
	}
	inversModular (n % a, a, xx, yy);
	x = (yy - xx * (n / a)) % mod;
	y = xx;
	if (x < 0) {
		x += mod;
	}
}

int main () {
	long long a, n, x, y;
	freopen ("inversmodular.in", "rt", stdin);
	freopen ("inversmodular.out", "wt", stdout);
	scanf ("%lld%lld", &a, &n);
	mod = n;
	for (int i = 0; i < 50000; ++ i)
		inversModular (a % n, n, x, y);	
	printf ("%d\n", x);
	return 0;
}