cai_lw's competitive programming library
Loading...
Searching...
No Matches
pow.hpp
1
#pragma once
2
3
#include <cstdint>
4
#include <functional>
5
6
namespace
cplib {
7
13
template
<
typename
T,
typename
Op = std::multiplies<T>>
14
constexpr
T
pow
(T base, uint64_t exp, Op&& op = {}) {
15
T res(1);
16
while
(exp) {
17
if
(exp & 1) {
18
res = op(res, base);
19
}
20
base = op(base, base);
21
exp >>= 1;
22
}
23
return
res;
24
}
25
26
}
// namespace cplib
cplib::pow
constexpr T pow(T base, uint64_t exp, Op &&op={})
A generic exponetiation by squaring function.
Definition:
pow.hpp:14
src
cplib
num
pow.hpp
Generated by
1.9.6