Pagini recente » Cod sursa (job #1700192) | Cod sursa (job #2528757) | Istoria paginii runda/simulusu4/clasament | Cod sursa (job #1942068) | Cod sursa (job #1971153)
#include<cstdio>
#define ll long long
using namespace std;
ll getphi(ll nr)
{
ll sol=nr,mod=nr;
for(int i=2;i*i<=nr;i++)
if(nr%i==0)
{
while(!nr%i) nr/=i;
sol=sol/i*(i-1)%mod;
}
if(nr!=1) sol=sol/nr*(nr-1)%mod;
return sol;
}
int main()
{
ll m,n;
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
scanf("%lld%lld",&n,&m);
ll p=getphi(m)-1;
ll sol=1;
for(int i=1;i<=p;i<<=1)
{
if(i&p) sol=sol*n%m;
n=n*n%m;
}
printf("%lld\n",sol);
fclose(stdin);
fclose(stdout);
return 0;
}