Pagini recente » Cod sursa (job #2769381) | Cod sursa (job #1671732) | Cod sursa (job #1523407) | Cod sursa (job #106374) | Cod sursa (job #2863388)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int log_pow(int x, int p, int mod)
{
int rez = 1;
while(p)
{
if(p % 2 == 1)
{
rez = (rez * x) % mod;
}
x = (x * x) % mod;
p /= 2;
}
return rez;
}
int main()
{
int x, n;
fin >> x >> n;
int phi[n + 1];
for (int i = 1; i <= n; ++i)
phi[i] = i;
for (int i = 2; i <= n; ++i)
{
if (phi[i] == i)
{
for (int j = i; j <= n; j += i)
phi[j] = phi[j] / i * (i - 1);
}
}
fout << log_pow(x, phi[n] - 1, n);
return 0;
}