Pagini recente » Cod sursa (job #195540) | RCPC 2019 | Cod sursa (job #2963695) | Cod sursa (job #306871) | Cod sursa (job #2018524)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("inversmodular.in");
ofstream out("inversmodular.out");
long long A, N;//date de intrare
void citire(){
in >> A >> N;
}
//(A * X) % N = 1 -> A * X + N * Y = cmmmdc(A, N) = 1; N * Y div cu N
void euclidExtins(long long a, long long b, long long & x, long long & y){
if(b == 0){
x = 1;
y = 0;
}else{
long long x0, y0;
euclidExtins(b, a%b, x0, y0);
x = y0;
y = x0 - (a / b)*y0;
}
}
void rezolvare(){
long long x, y;
euclidExtins(A, N, x, y);
if(x <= 0){
x = N + (x % N);
}
out << x;
}
int main(){
citire();
rezolvare();
return 0;
}