• 1.题目分析

原题

本题在于快速幂的使用,以及对long long的应用问题。

  • 2.解题思路
  1. 快速幂

求幂常见用法:

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;
}

最新文章

  1. eclipse maven 插件 安装 和 配置
  2. Ipad Safari iframe cookie 当浏览器默认禁用第三方COOKIE
  3. CSS3——动画效果
  4. Flip Game poj1753
  5. 关于JavaScripting API您不知道的5件事
  6. WebBrowser中取对应的图片资源
  7. github使用方法(一)
  8. Python2/3中的urllib库
  9. ext.net在使用水晶报表时页面无数据显示,并报错误Uncaught ReferenceError: bobj is not defined.
  10. HTML中的Hack条件注释语句
  11. 虚拟环境更新HA
  12. Hystrix介绍
  13. 利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库)
  14. 初识SEO
  15. androidstudio项目如何使用git版本回退
  16. 各版本最新的Visual C++可再发行组件包(Redistributable Package)下载和合集
  17. windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式 Windows 检测到 EFI 系统分区格式化为 NTFS。将 EFI 系统分区个数化为 FAT32,然后重新启动安装
  18. JavaScript概念之screen/client/offset/scroll/inner/avail的width/left 分类: JavaScript HTML+CSS 2015-05-27 16:42 635人阅读 评论(0) 收藏
  19. 如何在socket编程的Tcp连接中实现心跳协议
  20. [UE4]场景光照改进PostProcessVolume

热门文章

  1. Java基础(一)对象构造
  2. Python+Keras+TensorFlow车牌识别
  3. Rest_Framework之认证、权限、频率组件源码剖析
  4. docker 和 FastDFS上传和下载文件
  5. Vue + Mui
  6. 作为一名程序员,你真正了解CDN技术吗?
  7. [考试反思]1024csp-s模拟测试85:以为
  8. CSPS模拟 79
  9. MongoDB自学------(1)MongoDB4.0安装
  10. 『题解』洛谷P3384 【模板】树链剖分