思想
快速幂是一个快速计算一个数的幂次方的算法(废话)
当我们计算 时,我们可以把以二进制的形式拆分
例 ;
;
于是……
这样,我们就可以每次将做平方操作,到达所需要的值时即可更新,时间复杂度
具体操作
我们可以使用&来获取的二进制的最后一位,使用来使的二进制向右移,由于C++会在右移后的高位补0,所以在操作完后,的值会变为0,所以当等于0时跳出循环并返回
代码实现
1 | int qpow(int x,int y,int mod) //x为底数,y为幂,mod为模数 |
快速幂是一个快速计算一个数的幂次方的算法(废话)
当我们计算 时,我们可以把以二进制的形式拆分
例 ;
;
于是……
这样,我们就可以每次将做平方操作,到达所需要的值时即可更新,时间复杂度
我们可以使用&来获取的二进制的最后一位,使用来使的二进制向右移,由于C++会在右移后的高位补0,所以在操作完后,的值会变为0,所以当等于0时跳出循环并返回
1 | int qpow(int x,int y,int mod) //x为底数,y为幂,mod为模数 |