Pagini recente » Cod sursa (job #1745069) | Cod sursa (job #691832) | Cod sursa (job #1894779) | Cod sursa (job #744925) | Cod sursa (job #1490844)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int lgput(int a, int b, int mod)
{
if(b == 1)
return a % mod;
if(b == 0)
return 1;
int rez = lgput(a, b/2, mod) % mod;
if(b % 2 == 0)
return (1LL * rez * rez) % mod;
else
return (1LL * (1LL * rez * rez) % mod) * a % mod;
}
int phi(int n) {
int nrdiv = 1;
for(int i = 2; i * i <= n; i++) {
if(n % i == 0) {
++ nrdiv;
if(n / i != i)
++ nrdiv;
}
}
return n - nrdiv;
}
int main()
{
int a, n;
in >> a >> n;
out << lgput(a, phi(n) - 1, n);
return 0;
}