Pagini recente » Cod sursa (job #218759) | Cod sursa (job #2403136) | Cod sursa (job #1899577) | Cod sursa (job #661012) | Cod sursa (job #1119013)
#include <fstream>
#include<math.h>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
long long a,nn;
int nr(int n)
{
long long i,nn=n;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
nn=nn*(i-1)/i;
while(n%i==0)
{
n=n/i;
}
}
}
if(n!=1) nn=nn*(n-1)/n;
return nn;
}
int ex(int a,int p,int n)
{
int sol=1,i;
for(i=0;(1<<i)<=p;i++)
{
if( ((1<<i)&p)>0 ) sol=(sol*a)%n;
a=(a*a)%n;
}
return sol;
}
int main()
{
int i,nn,j,x;
long long n;
in>>a>>n;
x=nr(n);
out<<ex(a,x-1,n);
return 0;
}