Cod sursa(job #2757665)

Utilizator Marius7122FMI Ciltea Marian Marius7122 Data 5 iunie 2021 18:00:00
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <fstream> 

using namespace std;

ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");

int gcdExtended(int a, int n, int &x, int &y)
{
	if(a == 0)
	{
		x = 0;
		y = 1;
		return n;
	}
	int x1, y1;
	int gcd = gcdExtended(n % a, a, x1, y1); 
	x = y1 - x1 * (n / a);
	y = x1;
	return gcd;
}

int modInv(int a, int n)
{
	int x, y;
	int gcd = gcdExtended(a, n, x, y);

	if(gcd != 1)
		return -1;
	else 
		return (1ll * x + n) % n;
}

int main()
{
	int  a, n;
	fin >> a >> n;

	fout << modInv(a, n) << '\n';
	return 0;
}