快速幂取模

快速幂取模学习心得:

首先得掌握求快速幂的方法,求快速幂可以用位运算,也可以用将底数翻倍,指数减半的方法,我用的是后者。会求快速幂后,只要知道下面这个公式就可以求快速幂取模了。公式如下:
(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=(a
a)%m; //底数翻倍
n/=2; //指数减半
}
return s;
}
当然,也可以用位运算求快速幂取模,位运算取模的话每次将指数按位与1,若结果为1,则答案乘以底数,若结果为0,则继续下去,每次进行上面操作后,要将底数翻倍,并且将指数右移。

快速幂取模知识梳理:

先构建求快速幂的函数,再将公式(ab) mod c = ((a mod c)(b mod c)) mod c镶嵌在函数中就可以了,是不是很简单- ̗̀(๑ᵔ⌔ᵔ๑)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值