题目描述

给你三个整数 b,p,k,求 b^pmod 。

输入格式

输入只有一行三个整数,分别代表 b,p,k

输出格式

输出一行一个字符串 b^p mod k=s,其中 b, p, k分别为题目给定的值, s 为运算结果。

输入输出样例

输入 #1复制

2 10 9

输出 #1复制

2^10 mod 9=7

说明/提示

样例输入输出 1 解释

2^{10} =1024,1024 mod 9 = 71024mod9=7。

数据规模与约定

  • 对于 100\%100% 的数据,保证 0\le b,p < 2^{31}0≤b,p<231,1 \leq k \leq 2^{31}1≤k≤231。

以 3^10 % 9为例

思路一:

(10)10=(1010)2, 1表示取, 幂次为1,2,4,8,16.......,3^1,3^2, 3^4,3^8.....每次将取的数表示出来,依次累乘即可。

3^2=(3^1)^2

3^4=(3^2)^2

3^8=(3^4)^2

.......

所以每次循环都平方构造出取的数。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll fun(ll a, ll b, ll m){ll base=a%m,c=1%m;//c要取模,防止m=1的情况while(b){if(b&1){c=c*base%m;} b>>=1;base=base*base%m;//base就是每次构造要乘上的数}return c;
}
int main(){ll b,p,k;cin>>b>>p>>k;cout<<b<<"^"<<p<<" mod "<<k<<"="<<fun(b,p,k)<<endl;return 0;
}

思路二:

根据幂次p,可以分为偶数与奇数两种情况。

若p为奇数, b^p=b* ((b^2)^(p/2))

若p为偶数    b^p=(b^2)^(p/2)

其中b是在不断变化的,b*=b;

P1226 【模板】快速幂||取余运算相关推荐

  1. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  2. 洛谷 P1226 【模板】快速幂||取余运算

    题目描述 给你三个整数 a,b,p,求 a^b mod p. 输入格式 输入只有一行三个整数,分别代表 a,b,p. 输出格式 输出一行一个字符串 a^b mod p=s,其中 a,b,p 分别为题目 ...

  3. 【数学】幂运算与快速幂取余

    一.幂运算 1.幂的定义: 的幂就是多个相乘,记作,表示的次幂,即个相乘,我们把叫做底数,叫做指数. 2.幂的运算: 我们可以用公式将幂运算进行简化,公式如下: 3.求幂方法: (1). Python ...

  4. Python实现快速幂取余算法

    引子 今天无意中,看到了慧科教育科技集团有限公司-后厂理工学院 的AI相关学员招募信息,要求颇高,还要做编程自测题,并且达到60分才建议进行课程的学习.我忍不住发送了报名信息,得到了自测题.看到了如下 ...

  5. 【面试相关】python实现快速幂取余算法详解

    假设我们要计算 2102^{10}210 对1000取模的结果,可以很简单的得到24.但是如果要求 210002^{1000}21000 对1000取模的结果,常规方法就行不通了,因为常规的变量无法容 ...

  6. 快速幂(快速幂取余)

    引入公式 (a*b) %c = ((a % c)*(b % c)) %c 普通求幂的解法 public static int pow(int x,int n) {int result = 1;for ...

  7. 大数取模运算,快速幂取模运算

    1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...

  8. 快速幂取余算法总结详解

    废话不多说, 直接步入正题. 现在oj网站的题或者竞赛的题,如果a的b次幂且b很大,那么题中大多会让你把结果对一个数取余也就是求模,例如a^b%c这种,当然如果是考高精度的题除外. 接下来我将提供一种 ...

  9. A hard puzzle(HDU1097)(快速幂取模)

    题目链接: HDU1097 题面: 翻译: 问题描述 lcy给了feng5166,lwg,JGShining和Ignatius一个难题:给了a和b,如何知道a^b.每个人都反对这个BT问题,所以lcy ...

最新文章

  1. matlab通信物理层仿真,通信小精灵(物理层仿真工具) 可计算仿真误码率、理论误...
  2. 简单搭建zookeeper集群分布式/伪分布式
  3. Java中ListE对象赋值问题(引用传递和值传递)
  4. 根目录访问php 404,nginx配置后只有根目录首页index.php能访问,其他页面404
  5. 第一个Android项目HelloAndroid
  6. RabbitMQ多消费者消息分配
  7. 转:百度手机地图网络性能优化实践
  8. Ansible Loops
  9. 微分方程Gear方法MATLAB,matlab求解常微分方程(组)
  10. 网络邻居计算机访问权限设置,windows7不能访问网上邻居的原因及解决方法
  11. 手把手教你微信第三方平台开发
  12. 2.2 反相放大器、高输入电阻反相放大器、反相高压放大器
  13. CSS3-设置基本边框和背景
  14. Android内存泄漏分析
  15. 2015年中国云计算市场回顾与展望
  16. SCI论文写作的学习与总结
  17. [附源码]java毕业设计学习资源共享与在线学习系统
  18. 该如何选择Java开发和嵌入式开发
  19. HTTP强缓存和协议缓存
  20. python生成词云图_用python生成词云图教程

热门文章

  1. 二叉树(二):判断是不是二叉搜索树、判断是不是完全二叉树、判断是不是平衡二叉树、二叉搜索树的最近公共祖先、在二叉搜索树中找到两个节点的最近公共祖先、序列化二叉树、重建二叉树、输出二叉树的右视图
  2. 英语口语练习六十三之口语中易犯的小错误
  3. LoadRunner 使用
  4. 获取文件夹的子文件夹名字
  5. 【魔方攻略】粽子魔方教程(原创)
  6. golang学习--unicode 和 regex包
  7. (转载)Selenium + Chrome headless 报ERROR:gpu_process_transport_factory.cc(1007)]
  8. MTU从网络接口传输的数据包的最大大小
  9. 金陵科技学院五月份计算机,赵炜-金陵科技学院 计算机工程学院
  10. 探索开发一个游戏引擎需要那些知识和技术