Pagini recente » Istoria paginii runda/fwdf/clasament | Monitorul de evaluare | Cod sursa (job #2395064) | Cod sursa (job #1376491) | Cod sursa (job #2571006)
#include <fstream>
using namespace std;
ifstream f ("inversmodular.in");
ofstream g ("inversmodular.out");
int a, n;
int phi (int x)
{
int rez = x;
for (int i=2; i*i<=x; i++)
{
if (x % i == 0)
{
while (x % i == 0)
x /= i;
rez = rez * (i-1);
rez /= i;
}
}
if (x > 1)
{
rez = rez * (x-1);
rez /= x;
}
return rez;
}
int Inv_Mod (int x, int mod)
{
int p = phi(mod) - 1;
int rez = 1;
while (p)
{
if (p % 2 == 1)
rez = (1LL * rez * x) % mod;
x = (1LL * x * x) % mod;
p /= 2;
}
return rez;
}
int main()
{
f >> a >> n;
g << Inv_Mod(a, n);
return 0;
}