题目描述
输入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
源代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 11
#define MOD 123
#define E 1e-6
using namespace std;
typedef long long ll;
ll pow(ll x,ll y,ll z)//位运算求快速幂
{
ll sum=1;
while(y)
{
if(y&1)
sum=sum*x%z;
x=x*x%z;
y>>=1;
}
return sum;
}
int main()
{
ll b,p,k;
ll s;
cin>>b>>p>>k;
if(p==0)//次数为0时的特判
s=0;
else
s=pow(b,p,k);//求快速幂
printf("%lld^%lld mod %lld=%lld\n",b,p,k,s);
return 0;
}