P1226 【模板】快速幂||取余运算
程序员文章站
2022-03-03 08:53:59
...
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<bits/stdc++.h>
using namespace std;
int main()
{
long long int b,p,k;
cin>>b>>p>>k;
long long int x=p;
long long int ans=1,base=b;
while(p)//快数幂
{
if(p%2==1)
{
ans*=base;
ans%=k;
base=base%k;
}
base*=base;
base=base%k;
p/=2;
}
ans=ans%k;
cout<<b<<"^"<<x<<" mod "<<k<<"="<<ans;
}