Cod sursa(job #1164376)
Utilizator | Radu Szasz SRadu | Data | 2 aprilie 2014 00:31:01 |
---|---|---|---|
Problema | Invers modular | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.48 kb |
#include <fstream>
using namespace std;
int A, N;
void Euclid(int A, int B, int &X, int &Y) {
if(!B) {
X = 1;
Y = 0;
return;
}
int X0, Y0;
Euclid(B, A % B, X0, Y0);
X = Y0;
Y = X0 - (A / B) * Y0;
}
int main() {
ifstream in("inversmodular.in");
in >> A >> N;
in.close();
int X, Y;
Euclid(A, N, X, Y);
X %= N;
if(X < 0)
X += N;
ofstream out("inversmodular.out");
out << X << "\n";
out.close();
}