Pagini recente » Cod sursa (job #1123211) | Cod sursa (job #772909) | Cod sursa (job #1134481) | Cod sursa (job #2493411) | Cod sursa (job #2281415)
#include <bits/stdc++.h>
using namespace std;
long long int a,n,phideN;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int main()
{
fin>>a>>n;
phideN=1;
long long int d=2;
long long int m=n;
while(m>1)
{
if(d*d>m) d=m;
if(m%d==0)
{
while(m%d==0) m/=d,phideN*=d;
phideN=phideN/d*(d-1);
}
if(d==2) d=3;
else d+=2;
}
long long int sol=1;
long long int p=phideN-1;
while(p>0)
{
if(p%2==1)
{
sol=(sol*a)%n;
p--;
}
a=(a*a)%n;
p/=2;
}
fout<<sol%n;
return 0;
}