快速乘+快速幂

最近在刷数论的题目什么扩展欧几里得,卢卡斯 发现我高中学的东西都忘记了,我做了一道等比数列求和的问题,我直接推出结论然后想用快速幂直接解决问题但是被卡时间了,超时了,我看见大佬们有两种做法,一种是二分快速幂,一种就直接快速乘的方式就省了时间,下面是模板a^b mod p;

typedef long long ll;
ll mul(ll a,ll b,ll p){
	ll res=0;
while (b != 0)
  {
   if (b&1)
    res = (res+a)%p;
   b = b >> 1;
   a = (a+a)%p;
  }
	return res;
}
ll qmi(ll a,ll b,ll p){
	ll ans=1;
	while(b){
		if(b&1)ans=mul(ans,a,p);
		b>>=1;
		a=mul(a,a,p);
	}
	return ans;
}
全部评论

相关推荐

06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务