问题 H: 【例7.5】 取余运算(mod)
时间限制: 1 Sec 内存限制: 128 MB题目描述
输入b,p,k的值,求bp mod k的值。其中b,p,k*k为长整型数。
输入
输入b,p,k的值。
输出
求bp mod k的值。
样例输入
2 10 9
样例输出
2^10 mod 9=7
提示
#include<iostream>
using namespace std;
long long int f(long long int x,long long int y,long long int j)
{
if(y==0)return 1;//x^0=1,对任何数取余都为1
long long int a;
a=(f(x,y/2,j)*f(x,y/2,j))%j;//x^y=x^y/2*x^y/2(x为偶数);x^y=x^y/2*x^y/2*x(x为奇数)
if(y%2!=0)a=(a*x)%j;
return a;
}
int main()
{
long long int b,p,k;
cin>>b>>p>>k;
long long int b1=b%k;//防止b过大
cout<<b<<"^"<<p<<" mod "<<k<<"="<<f(b1,p,k)<<endl;
return 0;
}