Pagini recente » Cod sursa (job #2879789) | Cod sursa (job #1062673) | Cod sursa (job #553160) | Cod sursa (job #752410) | Cod sursa (job #2605636)
#include <fstream>
using namespace std;
int main() {
ifstream cin ("inversmodular.in");
ofstream cout ("inversmodular.out");
long long a, n, i, cn, nr, put;
cin >> a >> n;
cn = nr = n;
i = 2;
while (i * i <= cn) {
if (cn % i == 0) {
nr = nr / i * (i - 1);
while (cn % i == 0)
cn /= i;
}
i++;
}
if (cn > 1)
nr = nr / cn * (cn - 1);
nr--;
put = 1;
while (nr) {
if (nr % 2)
put = (put * a) % n;
nr /= 2;
a = (a * a) % n;
}
cout << put;
return 0;
}