https://www.luogu.org/problemnew/show/P1226
题目描述
输入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>
using namespace std;
long long quick_pow(long long a,int b,int k);
int main()
{
int n,p,k;
cin>>n>>p>>k;
cout<<n<<'^'<<p<<" mod "<<k<<'='<<quick_pow(n,p,k)<<endl;
return 0;
}
long long quick_pow(long long a,int b,int k)
{
long long temp1=a,temp2=1;
while(b>0)
{
if(b&1)
{
temp2*=temp1;
temp2%=k;
}
temp1*=temp1;
temp1%=k;
b>>=1;
}
return temp2%k;
}