Pagini recente » Cod sursa (job #2025826) | Cod sursa (job #810203) | Cod sursa (job #2227586) | Cod sursa (job #2835114) | Cod sursa (job #2445665)
#include <fstream>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int a, n;
int exp(int n, int p) {
int r = 1;
while (p) {
if (p % 2 == 1)r *= n;
n *= n;
p /= 2;
}
return r;
}
int phi(int n) {
int result = n;
for (int p = 2; p * p <= n; ++p) {
if (n % p == 0) {
while (n % p == 0)
n /= p;
result -= result / p;
}
}
if (n > 1)
result -= result / n;
return result;
}
int main() {
ios_base::sync_with_stdio(false);
in.tie(NULL), out.tie(NULL);
in >> a >> n;
out << exp(a, phi(n) - 1) % n;
}