说实话,我也想不到我会连快速幂都忘掉。
不过毕竟退赛前也仅仅只是单纯的把代码记住了而已。
既然现在理解了就稍微记录一下吧。
int Power(int x, int k) {
int res = 1;
for ( ; k; k >>= 1) {
(k & 1) && (res = res * res);
x = x * x;
}
return res;
}
变量 x 维护的是一开始的基数的 2 ^ n 的数,所以当 k 的二进制中当前位为 1 就算入答案。
其实的确很简单,不知道为什么一年前怎么也想不明白。