Pagini recente » Cod sursa (job #1375803) | Cod sursa (job #1870916) | Cod sursa (job #1140551) | Cod sursa (job #920655) | Cod sursa (job #1290901)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("inversmodular.in");
ofstream g ("inversmodular.out");
int a, n;
int phi(int n) {
int x = n;
for (int i = 2; i * i <= x; i++) {
if (n % i == 0) {
while (n % i == 0) n /= i;
x = x / i * (i - 1);
}
}
if (n != 1) x = x / n * (n - 1);
return x;
}
int putere(int x, int p) {
int a;
if (p == 0) return 1;
a = putere(x, p / 2);
a = (1LL * a * a) % n;
if (p % 2 == 0) return a;
return (1LL * a * x) % n;
}
int main() {
f >> a >> n;
int fi = phi(n) - 1;
g << putere(a, fi);
return 0;
}