洛谷 P1226 【模板】快速幂||取余运算
题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入格式
三个整数b,p,k.
输出格式
输出“b^p mod k=s”
s为运算结果
输入输出样例
输入 #1复制
输出 #1复制
题解:
快速幂模板题目。关于快速幂的讲解请参考我的上一篇博客:
直接上代码:
#include<cstdio>
#define ll long long
using namespace std;
ll b,p,k;
ll qpow(ll a,ll b,ll mod)
{
int ret=1;
while(b>0)
{
if(b&1)
ret=(ret*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return ret%mod;
}
int main()
{
scanf("%lld%lld%lld",&b,&p,&k);
printf("%lld^%lld mod %lld=%lld",b,p,k,qpow(b,p,k));
return 0;
}