快速幂+大整数乘法
1.快速幂+大整数乘法
2.递归实现三类枚举(快速幂+位运算)
快速幂:
(1)取模运算法则
- (a + b) % p = (a % p + b % p) % p
- (a - b) % p = (a % p - b % p ) % p
- (a * b) % p = (a % p * b % p) % p
(2)快速幂可以在O(logk)内算出
先处理出:
只需要把k处理成二进制就可以了
那如何进行预处理呢?
全开LL避免溢出
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
LL a,b,p;
LL qmi(LL &a,LL &b, LL &q)
{
LL res = 1 % q;
while(b)
{
if(b & 1) res = res * a % q;
a = a * a % q;
b >>= 1;
}
return res;
}
int main()
{
cin >> a >> b >>p;
cout << qmi(a,b,p)<<endl;
return 0;
}
例:
求 a * b % p 的值
Py自带高精度,所以虐杀
a = input()
b = input()
p = input()
print(a * b % p)
C++代码可以用位运算来做
可以参考上述快速幂的思想,a * b = a + a + a + a......+ a
a 2a 4a 8a 16a .....
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL res(LL &a, LL &b, LL &p)
{
LL res1 = 0;
while(b)
{
if(b & 1) res1 = (res1 + a) % p;
a = a * 2 % p;
b >>= 1;
}
return res1;
}
int main()
{
LL a, b ,p;
cin >> a >> b >> p;
cout << res(a, b, p)<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)