解法:快速乘与快速幂都是将其中一个变量作为二进制来计算的,计算方法如下:
快速乘:
如:a*15 => a*1111 => a*(1+10+100+1000) => a*1 + a*10 + a*100 + a*1000
public static int quickAdd(int a, int b) {
int res = 0;
int temp = a;
while (b > 0) {
if ((b & 1) == 1) {
res += temp;
}
temp <<= 1;
b >>= 1;
}
return res;
}
快速幂:
如:a15 => a1111 => a(1+10+100+1000) => a1 * a10 * a100 * a1000
public static int quickMul(int a, int b) {
int res = 1;
int temp = a;
while (b > 0) {
if ((b & 1) == 1) {
res *= temp;
}
temp *= temp;
b >>= 1;
}
return res;
}