Pagini recente » Cod sursa (job #688082) | Cod sursa (job #1786640) | Cod sursa (job #1140856) | Cod sursa (job #1461840) | Cod sursa (job #3199096)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
long long a, mod;
static inline long long Phi(long long nr) {
long long r = nr;
long long d = 2;
while(nr > 1) {
if(nr % d == 0) {
r = r / d * (d - 1);
while(nr % d == 0) nr /= d;
}
d++;
if(d * d > nr) d = nr;
}
return r;
}
static inline long long Put(long long a, long long n) {
long long p = 1;
while(n) {
if(n % 2 == 1) p = (p * a) % mod;
a = (a * a) % mod;
n /= 2;
}
return p;
}
int main() {
fin >> a >> mod;
fout << Put(a, Phi(mod) - 1);
return 0;
}