把B用二进制表示:
例如假如:B=101011
B=2^5+2^3+2^1+2^0
A^B = A^(2^5) * A^(2^3) * A^(2^1) * A^(2^0)
= A^(2^5+2^3+2^1+2^0)=A^B
所以可以从B的低位开始,循环并计算A^(2^0), A^(2^1), A^(2^2)....
同时,并且判断B的该位是否为1,如果为1,把当前计算的A^(2^i)累乘到结果中。
int Func(int a, int b) { int p = a; int ans = 1; while(b) { if(b & 1) ans = (ans * p); p = (p * p); b = b >> 1; } return ans; }