【洛谷】P1226 【模板】快速幂||取模运算
2019-08-18 17:06
120 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44668898/article/details/99706284
原题链接:https://www.luogu.org/problem/P1226
题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入输出格式
输入格式:
三个整数b,p,k.
输出格式:
输出“b^p mod k=s”
s为运算结果
输入输出样例
输入样例#1:
2 10 9
输出样例#1:
2^10 mod 9=7
说明
时空限制:1000ms 125M
思路:快速幂的模板题,同时结合取模运算。
快速幂:
推荐一篇不错的博客:快速幂
取模运算规则:
- (a + b) % p = (a % p + b % p) % p
- (a - b) % p = (a % p - b % p) % p
- (a * b) % p = (a % p * b % p) % p
- a ^ b % p = ((a % p)^b) % p
代码如下:
#include <iostream> #include <cstdio> using namespace std; typedef long long ll; int main() { ll b,p,k; cin>>b>>p>>k; //ans表示最终运算结果,将b暂存入base,p暂存入t ll ans=1,base=b,t=p; while(t>0){ //如果t在二进制下还未用完 if(t&1){ //如果t在二进制下最后一位是1 ans=ans*base%k; //乘上base再对k取模 } base=base*base%k; //自乘再取模 t>>=1; //二进制数右移一位 } ans%=k; //最后来一次总的取余 cout<<b<<"^"<<p<<" "<<"mod"<<" "<<k<<"="<<ans<<endl; return 0; }
相关文章推荐
- 洛谷 P1226 快速幂取模 模板
- 【分治】洛谷 P1226 取余运算||快速幂
- P1226 【模板】快速幂||取余运算
- P1226 【模板】快速幂||取余运算
- 快速幂取模运算模板
- 洛谷 P1226 取余运算||快速幂
- 洛谷 P3390 【模板】矩阵快速幂
- |洛谷|分治|数学|P1226 取余运算||快速幂
- 洛谷 P1177 【模板】快速排序
- 矩阵快速幂模板及其应用(洛谷3390)(洛谷1962)
- 洛谷 P1939 【模板】矩阵加速(数列):优化递推式的方法——矩阵快速幂
- 洛谷 P1177 【模板】快速排序【13种排序模版】
- P1226 【模板】快速幂||取余运算
- 洛谷 P3390 【模板】矩阵快速幂
- 洛谷 P1177 【模板】快速排序
- 洛谷 P3390 【模板】矩阵快速幂
- 洛谷 P1226 取余运算||快速幂
- 【洛谷P5158】【模板】多项式快速插值(分治NTT+拉格朗日插值)
- 洛谷1962 矩阵快速幂模板
- 快速求斯特林数总结(洛谷模板题解)