Cod sursa(job #1290305)
| Utilizator | Data | 11 decembrie 2014 08:20:13 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <cstdio>
using namespace std;
int d;
void euclid (int a, int b, int &x, int &y) {
if (!b) {
if (d % a) {
x = y = 0;
return;
}
y = 0;
x = d / a;
return;
}
int _x, _y;
euclid (b, a % b, _x, _y);
x = _y;
y = _x - a/b*_y;
}
int main () {
freopen ("inversmodular.in", "r", stdin);
freopen ("inversmodular.out", "w", stdout);
int a, n, x, y;
scanf ("%d %d", &a, &n);
d = 1;
euclid (a, n, x, y);
if (x < 0)
x += (-x / n + 1) * n;
printf ("%d", x);
}
