Cod sursa(job #1340527)

Utilizator theodor.moroianuTheodor Moroianu theodor.moroianu Data 11 februarie 2015 21:20:11
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <fstream>
using namespace std;

void euclid(long x, long * y, long n, long * m);

int main(){
	ifstream in("inversmodular.in");
	long x, y, n, m;
	in >> x >> n;
	euclid(x, &y, n, &m);
	ofstream out("inversmodular.out");
	while (y < 0)
		y += n;
	out << y;
	return 0;
}

void euclid(long x, long * y, long n, long * m){
	if (x == 0){
		*y = 0;
		*m = 1;
	}
	else{
		long y0, m0;
		euclid(n % x, &y0, x, &m0);
		*m = y0;
		*y = m0 - (n - (n % x)) / x * y0;
	}
}