Cod sursa(job #2077641)
Utilizator | Data | 28 noiembrie 2017 12:59:35 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.37 kb |
#include <bits/stdc++.h>
#include <cstdint>
constexpr const int32_t m = 1999999973;
int main() {
int64_t n, sol = 1;
uint32_t p;
std::ifstream("lgput.in") >> n >> p;
for (uint32_t i = 0; (1 << i) <= p; ++i) {
if (((1 << i) & p) > 0) {
sol *= n;
sol %= m;
n *= n;
n %= m;
}
}
std::ofstream("lgput.out") << sol << '\n';
}