Cod sursa(job #2246027)
| Utilizator | Data | 26 septembrie 2018 14:22:04 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int euler(int n) {
return (n - 1);
}
int putere(int a, int n, int m) {
//calculez a la n mod m
int p = 1;
do {
if (n % 2 != 0) {
p = (long long)p * a % m;
}
a = (long long)a * a % m;
n /= 2;
} while (n != 0);
return p;
}
int main() {
int a, n, x;
in >> a >> n;
in.close();
x = putere(a, euler(n) - 1, n);
out << x;
out.close();
return 0;
}
