Cod sursa(job #2408663)
| Utilizator | Data | 18 aprilie 2019 11:01:49 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include <fstream>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
pair <int, int> euclid(int x, int y) {
if (y == 0) return {1, 0};
auto p = euclid(y, x % y);
return {p.second, p.first - 1ll * (x / y) * p.second};
}
int main() {
int a, n;
in >> a >> n;
auto q = euclid(a, n);
while (q.first < 0)
q.first += n;
out << q.first;
return 0;
}