快速幂运算:
对于一个数x,我们对其进行n次幂运算。如果按照一般的算法,也就是x * x * x…,这样的复杂度为O(n2)。
如果我们利用快速幂运算,那么复杂度为O(logn),效率就会有极大的提高。
那么如何进行快速幂运算?
我们对x进行n次幂运算,此时如果n可以表示为2的幂次的和,n表示为:n=2k1+2k2+2k3…。那么xn=x2的k1次 × x2的k2次× x2的k3次…。这样,在求每个分量的同时计算出x的n次幂,比一般的算法节约时间。
C代码实现:
#include <stdio.h>
#include <stdlib.h>
typedef long long ll;
ll power(ll x,ll n){
ll res=1;
while(n>0){
if