平常我们求a的n次方都是使用循环,每一次乘以一个a,一共循环n次
但是如果n很大,程序就会很慢。
这时候就要使用快速幂
其原理是位运算。举个例子:
比如说n==11,将n化为2进制数。就是1011,也就是 8+2+1
那么a的n次方就等于a的8次方+a的2次方+a的1次方
三者正好可以套入a*=a 。
因为每一次a*=a,都会让a的幂次变成原来的二倍,而二进制数的每一个位都是后一个位的二倍
如果二进制位在此时是1,就可以让答案乘以此时的a
代码:
平常我们求a的n次方都是使用循环,每一次乘以一个a,一共循环n次
但是如果n很大,程序就会很慢。
这时候就要使用快速幂
其原理是位运算。举个例子:
比如说n==11,将n化为2进制数。就是1011,也就是 8+2+1
那么a的n次方就等于a的8次方+a的2次方+a的1次方
三者正好可以套入a*=a 。
因为每一次a*=a,都会让a的幂次变成原来的二倍,而二进制数的每一个位都是后一个位的二倍
如果二进制位在此时是1,就可以让答案乘以此时的a
代码: