Pagini recente » Cod sursa (job #570203) | Cod sursa (job #2254988) | Cod sursa (job #837636) | Cod sursa (job #393777) | Cod sursa (job #1919922)
#include <cstdio>
using namespace std;
int mod;
int rid_put(int a,int n)
{
int p=1;
for(;n>=1;n>>=1)
{
if(n&1) p=(1LL*p*a)%mod;
a=(1LL*a*a)%mod;
}
return p;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
int a,n;
scanf("%d%d",&a,&n);
mod=n;
int phi=mod;
for(int i=2;1LL*i*i<=n;i++)
if(n%i==0)
{
phi=(phi/i)*(i-1);
for(;n%i==0;n/=i);
}
if(n>1) phi=(phi/n)*(n-1);
printf("%d",rid_put(a,phi-1));
return 0;
}