Pagini recente » Cod sursa (job #867561) | Cod sursa (job #3155756) | Cod sursa (job #3252204) | Cod sursa (job #1047286) | Cod sursa (job #1919916)
#include <cstdio>
using namespace std;
int mod;
int rid_put(int a,int n)
{
int p=1;
for(;n;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;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;
}