这题是基本的快速幂算法,唯一要注意的是测试用例为123456789 0 1时,任何数对1取模都是0,所以在快速幂函数里ans的初值设置为1 % p即可ac。
#include <iostream>
using namespace std;
typedef long long ll;
ll binaryPow(ll a,ll b,ll p){
ll ans = 1 % p;
while(b > 0){
if(b & 1){
ans = ans * a % p;
}
a = a * a % p;
b >>= 1;
}
return ans;
}
int main(){
int a,b,p;
cin>>a>>b>>p;
cout<<binaryPow(a,b,p);
return 0;
}