Pagini recente » Cod sursa (job #563009) | Cod sursa (job #3173684) | Cod sursa (job #8952) | Cod sursa (job #2046472) | Cod sursa (job #1563233)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MAXSQRTN = 50000;
ll a, n, ans = 1;
ll phi(ll n) {
ll res = 1;
ll prime[MAXSQRTN];
fill(prime, prime + MAXSQRTN, 1);
for (int i = 2; i * i <= n; ++i) {
if (prime[i]) {
res *= i;
for (int j = i * i; j <= n; j += i) {
prime[i] = 0;
}
}
}
}
int main() {
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");
cin >> a >> n;
ll phi = n - 1;
ll put = phi - 1;
while (put > 0) {
if (put % 2 == 1) {
ans = (ans * a) % n;
}
a = (a * a) % n;
put /= 2;
}
cout << ans;
return 0;
}