Pagini recente » Cod sursa (job #1932172) | Cod sursa (job #1117653) | Cod sursa (job #1691461) | Cod sursa (job #247902) | Cod sursa (job #3002446)
#include <bits/stdc++.h>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int a, n;
int Phi(int x)
{
int f, e = 0, phi = x;
for(f = 2; f * f <= x and x > 1; f++)
{
e = 0;
while(x % f == 0)
{
e++;
x /= f;
}
if(e > 0) phi = (phi / f) * (f - 1);
}
if(x > 1) phi = (phi / x) * (x - 1);
return phi;
}
int main()
{
int p, rez = 1;
in >> a >> n;
p = Phi(n) - 1;
while(p > 0)
{
if(p % 2 == 1) rez = (rez * a) % n;
a = (a * a) % n;
p /= 2;
}
out << rez << "\n";
return 0;
}