首页 > 其他 > 详细

快速幂/快速乘模板

时间:2020-02-03 21:10:29      阅读:76      评论:0      收藏:0      [点我收藏+]

快速幂

 1 ll quick_mod(ll a,int n)//求a的n次方
 2 {
 3     ll sum=1;//注意是乘法,所以初始化为1
 4     while(n)
 5     {
 6         if(n&1)//&运算符表示取这个数二进制的最后一位
 7         {
 8             sum=sum*a%mod;//若这位为1那么总和就应该乘当前的a
 9         }
10         a=a*a%mod;//不论该位为0还是1,a都应该平方一波,具体自己理解
11         n>>=1;//把n的二进制右移一位,等价于n/=2;
12     }
13     return sum;
14 }

 

快速乘

1 ll mul(ll a, ll b, ll p){//快速乘,计算a*b%p 
2     ll ret = 0;
3     while(b){
4         if(b & 1) ret = (ret + a) % p;
5         a = (a + a) % p;
6         b >>= 1;
7     }
8     return ret;
9 }

 

快速幂/快速乘模板

原文:https://www.cnblogs.com/AaronChang/p/12256883.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!