前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法竞赛进阶指南--快速幂,求a^b mod p

算法竞赛进阶指南--快速幂,求a^b mod p

作者头像
风骨散人Chiam
发布2020-10-28 11:03:21
6540
发布2020-10-28 11:03:21
举报
文章被收录于专栏:CSDN旧文
代码语言:javascript
复制
// 快速幂,求a^b mod p
int power(int a, int b, int p) {
	int ans = 1;
	for (; b; b >>= 1) {
		if (b & 1) ans = (long long)ans * a % p;
		a = (long long)a * a % p;
	}
	return ans;
}

// 64位整数乘法的O(log b)算法
long long mul(long long a, long long b, long long p) {
	long long ans = 0;
	for (; b; b >>= 1) {
		if (b & 1) ans = (ans + a) % p;
		a = a * 2 % p;
	}
	return ans;
}

// 64位整数乘法的long double算法
long long mul(long long a, long long b, long long p) {
	a %= p, b %= p; // 当a,b一定在0~p之间时,此行不必要。
	long long c = (long double)a * b / p;
	long long ans = a * b - c * p;
	if (ans < 0) ans += p;
	else if (ans >= p) ans -= p;
	return ans;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档