Pagini recente » Cod sursa (job #1294159) | Cod sursa (job #2940814) | Cod sursa (job #141138) | Cod sursa (job #923519) | Cod sursa (job #2673733)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
/*
void cmmdc(int a, int b, long long &x, long long &y)
{
if(b == 0)
{
x = 1;
y = 0;
}
else
{
long long x0,y0;
cmmdc(b, a % b, x0, y0);
x = y0;
y = x0 - a / b * y0;
}
}
int main()
{
int a,n;
long long x,y;
fin >> a >> n;
cmmdc(a,n,x,y);
if(x <= 0)x = n + x % n;
fout << x;
return 0;
}*/
int main()
{
int a,n;
fin >> a >> n;
int phin;
phin = n;
for(int i = 2; i * i <= n; ++i)
{
if(n % i == 0)
{
phin /= i;
phin *= (i - 1);
while(n % i == 0)
{
n /= i;
}
}
}
if(n != 1)
{
phin /= n;
phin *= (n - 1);
}
int doru = 1;
for(int i = 1; i <= phin - 1; i <<= 1)
{
if(i && phin)doru = (doru * a) % n;
doru = (doru * doru) % n;
}
fout << doru;
return 0;
}