这个算法的主要过程更二进制的转换有点像,只不过权值为二变为权值为a了。假设我们求5的8次方,我们可以先求出5的4次方,然后去平方即可。我们求5的4次方,我们就可以求5的2次方然后在平方就行。安照这样递推下去,然后回溯就可以求的5的8次方的值了。由于每次都进行了二分,所以时间复杂度为logn。
代码模版:
ll pow(ll a,ll b)
{
ll ans=1;
while(b!=0)
{
if(b%2==1) ans*=a;
a*=a;
b/=2;
}
return ans;
}