快速幂是快速解决a的b次方对m进行取模的问题。
通常来说,求a的b次方对m的%,就是用一个循环,然后让a乘以自己,持续b次。但是在数据量太大的情况下,很可能会超时。
所以就有了快速幂的方式。
使用&的方式判定b所对应的二进制结尾(二进制代码最右边)是1还是0从而判断b是奇数还是偶数。
再用b >>符号来让b右移1位,相当于抹去最右边的一位二进制。
#include <iostream>
using namespace std;
typedef long long LL;
LL binaryPow(LL a,LL b,LL m){
LL ans = 1;
while(b > 0){
if(b & 1) ans = ans * a % m;
a = a * a % m;
b >>= 1;
}
return ans;
}
int main(){
LL a,b,c;
cin >> a >> b >> c;
cout << binaryPow(a,b,c);
return 0;
}