Pagini recente » Cod sursa (job #2844259) | Cod sursa (job #1367977) | Cod sursa (job #1043491) | Cod sursa (job #2340284) | Cod sursa (job #1119009)
#include <fstream>
#include<math.h>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
long long a,n,nn;
int nr()
{
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 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;
in>>a>>n;
x=nr();
out<<ex(a,x-1);
return 0;
}