一个没啥用的东西,我经常写的快速幂是
int pow(int x, int e) {
int res = 1;
for (; e; e >>= 1, x *= x)
if (e & 1) res *= x;
return res;
}
最后一次的 x *= x 是冗余的,在乘法代价大的时候要避免(其实可以规划一下最优次数?但我不会)
int pow(int x, int e) {
for (int res = 1;; x *= x) {
if (e & 1) res *= x;
if ((e >>= 1) == 0) return res;
}
}
这样可以在条件判断 if 的次数不变的情况下移除那一次额外的乘法。