Pagini recente » Cod sursa (job #3297188) | Cod sursa (job #3298783) | Cod sursa (job #3298790)
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int phi(int n) {
int result = n;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
while (n % i == 0)
n /= i;
result -= result / i;
}
}
if (n > 1)
result -= result / n;
return result;
}
long long inv_mod(long long base, long long exp, long long mod) {
long long res = 1;
base %= mod;
while (exp > 0) {
if (exp % 2 == 1)
res = (res * base) % mod;
base = (base * base) % mod;
exp /= 2;
}
return res;
}
int main() {
long long a, n;
f >> a >> n;
int ph = phi(n);
long long inv = inv_mod(a, ph - 1, n);
g << inv << '\n';
return 0;
}