Cod sursa(job #929352)
Utilizator | Data | 26 martie 2013 23:24:01 | |
---|---|---|---|
Problema | Invers modular | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <algorithm>
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
typedef long long int64;
inline int64 log_pow(int x, int p);
int A, N;
int main() {
fin >> A >> N;
fout << log_pow(A, N - 2);
return 0;
}
inline int64 log_pow(int x, int pow) {
int64 result = 1;
for (int64 p = 1, log2_p = x; p <= pow; p *= 2) {
if (p & pow) {
result *= log2_p;
}
log2_p *= log2_p;
}
return result;
}