Pagini recente » Cod sursa (job #2698270) | Cod sursa (job #2301011) | Cod sursa (job #2232957) | Cod sursa (job #944718) | Cod sursa (job #1404681)
#include <bits/stdc++.h>
using namespace std;
int n, N, a, phi, i;
int ExpLog(int b, int e)
{
int sol = 1;
for(int i = 1; i <= e; i <<= 1)
{
if(i & e)
sol = (1ll * sol * b) % N;
b = (1ll * b * b) % N;
}
return sol;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%d%d", &a, &n);
N = n;
phi = 1;
for(i = 2; i * i <= n; i++)
if(n % i == 0)
{
n /= i;
phi *= (i - 1);
while(n % i == 0)
{
phi *= i;
n /= i;
}
}
if(n > 1)
phi *= (n - 1);
printf("%d\n", ExpLog(a, phi - 1));
return 0;
}