题解 | #快速幂#
快速幂
https://www.nowcoder.com/practice/defdedf4fe984c6c91eefa6b00d5f4f0
#include <iostream>
using namespace std;
typedef long long ll;
//快速幂FastPower
ll fp(ll a, ll b, ll c)
{
ll ans = 1;
while (b)
{
if (b & 1)//如果b是奇数,二进制末位是1
{
ans*= a;
}
ans %= c;//取模防止超范围
a = ((a%c)*(a%c))%c;
b>>=1;//右移一位
}
return ans%c;
}
int main() {
ll a, b, q, p;
cin >> q;
while (q--)
{
cin >> a >> b >> p;
cout << fp(a, b, p)<<endl;
}
return 0;
}
关于快速幂的介绍可以看这个视频:https://www.bilibili.com/video/BV12r4y1w7tx?spm_id_from=333.337.search-card.all.click


