Pagini recente » Cod sursa (job #557404) | Cod sursa (job #3036365) | Cod sursa (job #1978143) | Cod sursa (job #2689696) | Cod sursa (job #3194742)
#include <fstream>
using namespace std;
ifstream fin ("inversmodular.in");
ofstream fout ("inversmodular.out");
long long pp,nrdiv,nr,x,a,mod,p,d;
long long fct (long long x,long long n)
{
long long nr=1,sol=1;
for (int p=0; p<=30; p++)
{
nr=(nr*x)%mod;
if ((n>>p)&1)
sol=(sol*nr)%mod;
}
return sol;
}
int main ()
{
fin>>a>>mod;
x=mod;
nrdiv=1;
for (d=2; d*d<=x; d++)
{
if (x%d==0)
{
nr=0;
pp=1;
while (x%d==0)
{
x/=d;
pp*=d;
nr++;
}
pp/=d;
nrdiv*=(d-1)*pp;
}
}
if (x!=1)
nrdiv*=(x-1);
fout<<fct (a,nrdiv-1)%mod;
return 0;
}