Pagini recente » Cod sursa (job #2772510) | Borderou de evaluare (job #2079723) | Cod sursa (job #3256610) | Borderou de evaluare (job #1170046) | Cod sursa (job #3002299)
#include <fstream>
#include <iostream>
using namespace std;
inline int multiply(int a, int b, int mod) {
return (int)(((int64_t)a * b) % mod);
}
int log_pow(int base, int exp, int mod) {
int ans = 1;
int power = base;
while (exp) {
if (exp & 1) {
ans = multiply(ans, power, mod);
}
exp >>= 1;
power = multiply(power, power, mod);
}
return ans;
}
int inv(int a, int mod) { return log_pow(a, mod - 2, mod); }
int main() {
ifstream r("inversmodular.in");
ofstream w("inversmodular.out");
int a, mod;
r >> a >> mod;
w << inv(a, mod) << '\n';
return 0;
}