Pagini recente » Cod sursa (job #1784377) | Cod sursa (job #1753276) | Cod sursa (job #828559) | Cod sursa (job #1220443) | Cod sursa (job #2673767)
#include <fstream>
int n, m;
int prod(int a, int b) { return (a * b) % m; }
int putlog(int n, int k) {
if (k == 0) return 1;
int x = putlog(n, k / 2);
if (k % 2 == 0) return prod(x, x);
return prod(prod(x, x), n);
}
int phi(int x) {
int ph = x;
for(int i=2;i*i<=x;i++)
if (!(x % i)) {
while (!(x % i)) x /= i;
ph = (ph / i) * (i - 1);
}
if (x - 1) ph = ph / x * (x - 1);
return ph;
}
int main() {
std::ifstream fin("inversmodular.in");
std::ofstream fout("inversmodular.out");
fin >> n >> m;
fout << putlog(n, phi(m) - 1);
}