Pagini recente » Cod sursa (job #1401204) | Cod sursa (job #1714959) | Cod sursa (job #1692543) | Cod sursa (job #74146) | Cod sursa (job #1541089)
#include<cstdio>
#include<cstdlib>
#include<cmath>
long long a,n;
long long nrprime(long long nr)
{
long long phi=nr;
long long fact;
int radical;
radical=sqrt(nr);
for(fact=2; fact<=radical; fact++)
{
if(nr%i==0)
{
while(nr%i==0)
nr=nr/i;
phi=(phi/fact)*(fact-1)
}
}
if(nr!=1)
phi=(phi/nr)*(nr - 1);
return phi;
}
long long power(long long nr, long long p, long long n)
{
if(p==0)
return 1;
else if(p==1)
return nr%n;
else if(p%2==0)
return power(nr*nr, p/2)%n;
else if(p%2==1)
return (nr*power(nr*nr, (n-1)/2))%n;
}
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
scanf("%lld %lld",&a,&n);
long long p, inversmod;
p=nrprime(n) - 1;
inversmod=power(a, p, n);
printf("%lld\n",inversmod);
return 0;
}