Pagini recente » Cod sursa (job #2609787) | Cod sursa (job #2822325) | Cod sursa (job #292469) | Cod sursa (job #1657317) | Cod sursa (job #1212417)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
long long a, aux, x, n, o, d, nr, mod;
long long putere(long long a, long long x)
{
long long p=a, b=x, q=1;
while(b)
{
if(b&1)
{
q=(q*p)%mod;
}
p=(p*p)%mod;
b>>=1;
}
return q;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%d%d", &a, &n);
aux=n;
d=1;
mod=n;
o=1;
while(d*d<=aux)
{
d++;
nr=0;
while((aux%d)==0)
{
nr++;
aux/=d;
}
if(nr)
{
o=o*(d-1)*putere(d,nr-1);
}
}
if(aux!=1)
{
o=o*(aux-1);
}
printf("%lld", putere(a,o-1));
return 0;
}