题解 P1226 【【模板】快速幂||取余运算】
2024-09-01 11:23:00
- 1.题目分析
本题在于快速幂的使用,以及对long long的应用问题。
- 2.解题思路
- 快速幂
求幂常见用法:
int pow(int a,int b) {
int ans;
for(int i = 1;i<=b;++i) {
ans*=a;
}
return ans;
}
原理十分简单,将a乘b次。
时间复杂度: O(n)
但快速幂比它更快:
while(m>0){
if(m%2==1)
ans=ans*b%p;
b=b*b%p;
m=m>>1;
}
(以上是算法示例)
时间复杂度: O(log n)
所以,代码就出来了:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
long long ans = 1, i, j, k, m, n, b, p;
scanf_s("%lld%lld%lld", &b, &m, &p);
printf("%lld^%lld mod %lld=", b, m, p);
while (m > 0) {
if (m % 2 == 1)
ans = ans * b % p;
b = b * b % p;
m = m >> 1;
}
printf("%lld", ans % p);
return 0;
}
最新文章
- eclipse maven 插件 安装 和 配置
- Ipad Safari iframe cookie 当浏览器默认禁用第三方COOKIE
- CSS3——动画效果
- Flip Game poj1753
- 关于JavaScripting API您不知道的5件事
- WebBrowser中取对应的图片资源
- github使用方法(一)
- Python2/3中的urllib库
- ext.net在使用水晶报表时页面无数据显示,并报错误Uncaught ReferenceError: bobj is not defined.
- HTML中的Hack条件注释语句
- 虚拟环境更新HA
- Hystrix介绍
- 利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库)
- 初识SEO
- androidstudio项目如何使用git版本回退
- 各版本最新的Visual C++可再发行组件包(Redistributable Package)下载和合集
- windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式 Windows 检测到 EFI 系统分区格式化为 NTFS。将 EFI 系统分区个数化为 FAT32,然后重新启动安装
- JavaScript概念之screen/client/offset/scroll/inner/avail的width/left 分类: JavaScript HTML+CSS 2015-05-27 16:42 635人阅读 评论(0) 收藏
- 如何在socket编程的Tcp连接中实现心跳协议
- [UE4]场景光照改进PostProcessVolume