Pagini recente » Cod sursa (job #1838759) | Cod sursa (job #2227403) | Cod sursa (job #497079) | Cod sursa (job #1943445) | Cod sursa (job #2891314)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int a,n;
int Phi(int n)
{
int i,p=n;
for(i=2;i*i<=n && n>1;i++)
{
if(n%i==0)
{
p=p/i*(i-1);
while(n%i==0) n/=i;
}
}
if(n>1) p=p/n*(n-1);
return p;
}
int QuickExpo(int a,int k,int n)
{
int rez=1;
while(k>0)
{
if(k%2==1) rez=rez*1LL*a%n;
k/=2;
a=1LL*a*a%n;
}
return rez;
}
int main()
{
int phi;
fin>>a>>n;
phi=Phi(n);
fout<<QuickExpo(a,phi-1,n);
return 0;
}