模板题: 89. a^b
代码
#include <iostream>
using namespace std;
typedef long long LL;
int qmi(int a, int b, int p)
{
// p有可能是1,则res为0
int res = 1 % p;
// 从最低位开始看,看b的每一位
while (b)
{
// 最后一位是否是1,如果是1的话,就把当前的a的2的多少次幂乘进来。
if (b & 1) res = (LL)res * a % p;
// 每次把a平方,得到下一个
a = (LL)a * a % p;
// b右移一位
b >>= 1;
}
return res;
}
int main()
{
int a, b, p;
cin >> a >> b >> p;
cout << qmi(a, b, p) << endl;
return 0;
}