1497 取余运算
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 Description
输入b,p,k的值,编程计算bp mod k的值。其中的b,p,k*k为长整型数(2^31范围内)。
输入描述 Input Description
b p k
输出描述 Output Description
输出b^p mod k=?
=左右没有空格
样例输入 Sample Input
2 10 9
样例输出 Sample Output
2^10 mod 9=7
运用数论知识:快速幂取模运算引理:积的取余等于取余的积的取余
/*
作者:Demo
题目:p1497 取余运算
*/
#include<iostream>
using namespace std;
long long quick(long long b,long long p,long long k)
{
long ans=1;
b=b%k;
while(p!=0)
{
if(p&1)
{
ans=ans*b%k;
}
p>>=1;
b=b*b%k;
}
return ans;
}
int main()
{
long long b,p,k;
cin>>b>>p>>k;
cout<<b<<"^"<<p<<" "<<"mod"<<" "<<k<<"="<<quick(b,p,k)<<endl;
return 0;
}