0
点赞
收藏
分享

微信扫一扫

快速幂方法

GG_lyf 2022-03-24 阅读 49
java算法

求:b ^ x

一般算法:计算x次

快速算法:

1. b转换为二进制:e.g. x = 11, aka (001011)

2. 每次判断 x 的最后一位是否为1,若为1,则对应的答案乘上此时的b,

并将b向右移动一位,更新b= b^2

b b^2 b^4 b^8...

3.若不为1,则只更新b = b^2, 移位观察b的下一位,直到b = 0;


while (p > 0) {
    		if ((p & 1) == 1) {    //与运算,判断是否末位为1
    			ans.multiply(BigInteger.valueOf(a));
    			base *= base;      //更新base到它的二次方
    			p = p >> 1;        //右移一位
    		}else {
    			base *= base;
    			p = p >> 1;
    		}
    	}
举报

相关推荐

0 条评论