Pagini recente » Cod sursa (job #2759433) | Cod sursa (job #220959) | Cod sursa (job #1860591) | Cod sursa (job #925086) | Cod sursa (job #2782538)
#include<fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int MOD;
long long pow_log(long long a, long long b)
{
long long p=1;
while(b!=0)
{
if(b%2==1)
{
p*=a;
p%=MOD;
}
a*=a;
a%=MOD;
b/=2;
}
return p;
}
int main()
{
int a,n,sol,i;
f>>a>>n;
sol=n;
MOD=n;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
while(n%i==0)
n/=i;
sol/=i;
sol*=(i-1);
}
}
if(n!=1)
{
sol/=n;
sol*=(n-1);
}
sol=pow_log(a,sol-1);
g<<sol;
return 0;
}