快速幂取模学习心得:
首先得掌握求快速幂的方法,求快速幂可以用位运算,也可以用将底数翻倍,指数减半的方法,我用的是后者。会求快速幂后,只要知道下面这个公式就可以求快速幂取模了。公式如下:
(ab) mod c = ((a mod c)(b mod c)) mod c
代码如下:
unsigned long long int fun(long long int n, long long int m)
{
long long int s=1,a=2;
while(n>0)
{
if(n%2==1) //如果指数是奇数,把结果乘a。
{
s=sa;
s=s%m;
}
a=(aa)%m; //底数翻倍
n/=2; //指数减半
}
return s;
}
当然,也可以用位运算求快速幂取模,位运算取模的话每次将指数按位与1,若结果为1,则答案乘以底数,若结果为0,则继续下去,每次进行上面操作后,要将底数翻倍,并且将指数右移。
快速幂取模知识梳理:
先构建求快速幂的函数,再将公式(ab) mod c = ((a mod c)(b mod c)) mod c镶嵌在函数中就可以了,是不是很简单- ̗̀(๑ᵔ⌔ᵔ๑)