您的位置:首页 > 其它

[二分]取余运算||快速幂

2016-04-29 08:22 381 查看
又写一遍快速幂,还是需要理解原理..

题目描述

输入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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分 数论