Pagini recente » Cod sursa (job #1708991) | Cod sursa (job #2632858) | Cod sursa (job #1992634) | Cod sursa (job #2095669) | Cod sursa (job #2868596)
#include <fstream>
using namespace std;
ifstream cin ("inversmodular.in");
ofstream cout ("inversmodular.out");
int n, a;
int phi(int n)
{
int e = n, d = 2;
while (d * d <= n)
{
if (!(n % d))
{
e = e / d * (d - 1);
while (!(n % d))
n /= d;
}
++d;
}
if (n > 1)
e = e / n * (n - 1);
return e;
}
int p (int a, int b, int mod)
{
int res = 1;
while (b)
{
if (b & 1)
res = (1LL * a * res) % mod;
a = (1LL * a * a) % mod;
b >>= 1;
}
return res;
}
int main()
{
cin >> a >> n;
cout << p(a, phi(n) - 1, n)<< '\n';
}