[学习] 快速幂

使用场景:当两个较大的数进行指数运算且模一个数的时候,由于两个较大的数进行指数运算得到的结果是很大的,但是利用模的性质。

快速幂就是,如果指数的二进制下第k位为1,对应到指数运算中就是将底数 a^(2^(k-1)),并且将这个数 a^(2^(k-1)) 取模

int qpow(ll a,ll b) 
{
	ll res = 1;  //从1开始往后乘 
	while(b) 
	{
		if(b & 1) //如果b的最低位是1
		{
			res = res*a%p;
		}
		a = a*a%p;  //到下一位去,a得变成a*a
		b >>= 1;
	}
	return res;
}

[学习] 快速幂_第1张图片

你可能感兴趣的:(算法,学习)