Cod sursa(job #1457391)
Utilizator | Data | 3 iulie 2015 12:18:27 | |
---|---|---|---|
Problema | Invers modular | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.53 kb |
#include <fstream>
using namespace std;
ofstream fout("inversmodular.out");
ifstream fin("inversmodular.in");
long long A, N, X, Y;
void euclid_extins(long long &x, long long &y, long long a, long long b)
{
if(!b) {
x = 1;
y = 0;
}
else {
euclid_extins(x, y, b, a % b);
long long z = x;
x = y;
y = z - (a / b) * y;
}
}
int main()
{
fin >> A >> N;
euclid_extins(X, Y, A, N);
while(X <= 0) X += N;
fout << X << '\n';
return 0;
}