又写一遍快速幂,还是需要理解原理..
题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数
输入输出格式
输入格式
三个整数b,p,k.
输出格式
输出“b^p mod k=s”
s为运算结果
输入输出样例
INPUT
2 10 9
OUTPUT
2^10 mod 9=7
直接贴代码
#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
LL fast(LL,LL,LL);
int main(){
LL b,p,k;
scanf("%lld%lld%lld",&b,&p,&k);
cout<<b<<"^"<<p<<" mod "<<k<<"="<<fast(b,p,k);;
return 0;
}
LL fast(LL b,LL p,LL k){
LL ans=1;
while(p){
if(p&1)//判断奇偶数 请自行上百度%原理
ans=(ans*b)%k;
b=(b*b)%k;
p>>=1;
}
return ans;
}