Cod sursa(job #1025874)

Utilizator danny794Dan Danaila danny794 Data 10 noiembrie 2013 18:17:29
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>

using namespace std;

pair<int, int> extended_euclid(int a, int b){
	pair<int, int> result;

	if (a == 1){
		result.first  = 1;
		result.second = 0;
	} else if (b == 1) {
		result.first  = 0;
		result.second = -1;
	} else {
		int d = a / b, c = a % b;
		pair<int, int> p = extended_euclid(b, c);
		result.first = - p.second;
		result.second = - (p.second * d + p.first);
	}
	return result;
}

ifstream f("inversmodular.in");
ofstream g("inversmodular.out");

int main() {
	int A, N;
	f >> A >> N;
	int result = extended_euclid(A, N).first;

	if (result < 0)
		result+=N;
	g << result << '\n';

	f.close();
	g.close();
	return 0;
}