#快速幂
对于a^b%p,如果数据小一点,我们可以用pow函数计算,但是如果a,b都给到1e9以上,我们是没办法计算的,所以我们这里学习一种新的算幂的方法。
快速幂
比如我们要算2^ 15,我们可以把它写成22^ 14->24^ 7->244 ^ 6->8163…等等,只要在运算的过程中进行每步取模,就可以把它很快的算出来,时间复杂度仅仅是O(logn).
代码:
ll qpow(ll a,ll b,ll p)
{
ll ans=1;
while(b)
{
if(b&1)
{
ans*=a;
ans%=p;
}
a*=a;
b>>=1;
}
return ans;
}