P1226 【模板】快速幂||取余运算
题目描述
给你三个整数 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 【模板】快速幂||取余运算相关推荐
- 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)
题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...
- 洛谷 P1226 【模板】快速幂||取余运算
题目描述 给你三个整数 a,b,p,求 a^b mod p. 输入格式 输入只有一行三个整数,分别代表 a,b,p. 输出格式 输出一行一个字符串 a^b mod p=s,其中 a,b,p 分别为题目 ...
- 【数学】幂运算与快速幂取余
一.幂运算 1.幂的定义: 的幂就是多个相乘,记作,表示的次幂,即个相乘,我们把叫做底数,叫做指数. 2.幂的运算: 我们可以用公式将幂运算进行简化,公式如下: 3.求幂方法: (1). Python ...
- Python实现快速幂取余算法
引子 今天无意中,看到了慧科教育科技集团有限公司-后厂理工学院 的AI相关学员招募信息,要求颇高,还要做编程自测题,并且达到60分才建议进行课程的学习.我忍不住发送了报名信息,得到了自测题.看到了如下 ...
- 【面试相关】python实现快速幂取余算法详解
假设我们要计算 2102^{10}210 对1000取模的结果,可以很简单的得到24.但是如果要求 210002^{1000}21000 对1000取模的结果,常规方法就行不通了,因为常规的变量无法容 ...
- 快速幂(快速幂取余)
引入公式 (a*b) %c = ((a % c)*(b % c)) %c 普通求幂的解法 public static int pow(int x,int n) {int result = 1;for ...
- 大数取模运算,快速幂取模运算
1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...
- 快速幂取余算法总结详解
废话不多说, 直接步入正题. 现在oj网站的题或者竞赛的题,如果a的b次幂且b很大,那么题中大多会让你把结果对一个数取余也就是求模,例如a^b%c这种,当然如果是考高精度的题除外. 接下来我将提供一种 ...
- A hard puzzle(HDU1097)(快速幂取模)
题目链接: HDU1097 题面: 翻译: 问题描述 lcy给了feng5166,lwg,JGShining和Ignatius一个难题:给了a和b,如何知道a^b.每个人都反对这个BT问题,所以lcy ...
最新文章
- matlab通信物理层仿真,通信小精灵(物理层仿真工具) 可计算仿真误码率、理论误...
- 简单搭建zookeeper集群分布式/伪分布式
- Java中ListE对象赋值问题(引用传递和值传递)
- 根目录访问php 404,nginx配置后只有根目录首页index.php能访问,其他页面404
- 第一个Android项目HelloAndroid
- RabbitMQ多消费者消息分配
- 转:百度手机地图网络性能优化实践
- Ansible Loops
- 微分方程Gear方法MATLAB,matlab求解常微分方程(组)
- 网络邻居计算机访问权限设置,windows7不能访问网上邻居的原因及解决方法
- 手把手教你微信第三方平台开发
- 2.2 反相放大器、高输入电阻反相放大器、反相高压放大器
- CSS3-设置基本边框和背景
- Android内存泄漏分析
- 2015年中国云计算市场回顾与展望
- SCI论文写作的学习与总结
- [附源码]java毕业设计学习资源共享与在线学习系统
- 该如何选择Java开发和嵌入式开发
- HTTP强缓存和协议缓存
- python生成词云图_用python生成词云图教程
热门文章
- 二叉树(二):判断是不是二叉搜索树、判断是不是完全二叉树、判断是不是平衡二叉树、二叉搜索树的最近公共祖先、在二叉搜索树中找到两个节点的最近公共祖先、序列化二叉树、重建二叉树、输出二叉树的右视图
- 英语口语练习六十三之口语中易犯的小错误
- LoadRunner 使用
- 获取文件夹的子文件夹名字
- 【魔方攻略】粽子魔方教程(原创)
- golang学习--unicode 和 regex包
- (转载)Selenium + Chrome headless 报ERROR:gpu_process_transport_factory.cc(1007)]
- MTU从网络接口传输的数据包的最大大小
- 金陵科技学院五月份计算机,赵炜-金陵科技学院 计算机工程学院
- 探索开发一个游戏引擎需要那些知识和技术