Pagini recente » Cod sursa (job #358065) | Cod sursa (job #3195222) | Cod sursa (job #1813702) | Cod sursa (job #1494323) | Cod sursa (job #1950343)
#include <bits/stdc++.h>
using namespace std;
int raiseToPower(long long f, int exp, int n)
{
long long ans = 1;
while(exp) {
if(exp % 2 == 0) {
exp /= 2;
f = (f*f) % n;
}else {
ans = (ans * f) % n;
exp --;
}
}
return ans;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
int cn, i, n, a, euler;
scanf("%d%d", &a, &n);
cn = n;
euler = n;
i = 2;
while(i*i <= n) {
if(n % i == 0) {
while(n % i == 0)
n /= i;
euler = euler - euler / i;
}
i++;
}
if(n != 1) euler = euler - euler / n;
printf("%d", raiseToPower(a, euler-1, cn));
return 0;
}