快速幂及其模

快速幂及其模

前提

typedef long long int ll;

快速幂

时间复杂度

  • O(log2(N))

原理

幂指数以二进制的形式参与计算

然后把a^b转化为 通项为 a^( 2^n(0或1)) 求0到n项和的多项式

代码

ll quick_pow(ll a, ll b)
{
	ll res = 1;
	while (b)
	{
		if (b & 1)
			res = res * a;
		a *= a;
		b /= 2;
	}

	return res;
}

快速幂的模

原理

由模运算a^b%p = ((a%p)^b)%p结合快速幂的原理得出

代码

ll quick_pow_mod(ll a, ll b, ll mod)
{
	ll res = 1;
	while (b)
	{
		if (b & 1)
			res = res * a % mod;
		a = a * a % mod;
		b /= 2;
	}

	return res;
}
posted @   CairBin  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示