Pagini recente » Cod sursa (job #536700) | Cod sursa (job #2977107) | Cod sursa (job #2798449) | Clasament daupentrumata | Cod sursa (job #1647635)
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
ll n,a;
ll getphi(ll numar)
{
int nr=numar,var,sol=numar;
for(int i=2;i*i<=numar;i++)
if(nr%i==0)
{
var=0;
while(nr%i==0) nr/=i;
sol=(sol/i)*(i-1)%n;
}
if(nr>1)
{
sol=(sol/nr)*(nr-1)%n;
}
return sol;
}
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
scanf("%lld%lld",&a,&n);
ll p=getphi(n)-1;
ll sol=1;
for(int i=0; (1<<i)<=p; i++)
{
if( (1<<i)&p ) sol=sol*a%n;
a=a*a%n;
}
cout<<sol<<'\n';
return 0;
}