快速幂的简单实现

顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。

比如我们要求12^11,我们其实可以求12 ^ (2 ^ 0+2 ^ 1+2 ^ 3)

ll fastpow(ll x,ll y) {   //求取x^y 
	ll res=1;
	while(y) {
		if(y%2==1) {//为奇数,当前最低位为1,res就要乘以当前位置的权重 
			res*=x;
		}
		x*=x;   //每右移一次,最低位的权重都要乘以x 
		y/=2;   //右移 
	}
	return res;
}
posted @ 2020-05-10 18:39  Cyril_KI  阅读(12)  评论(0)    收藏  举报