题目链接
https://www.acwing.com/problem/content/877/
思路思路大概就是幂数转化为二进制,然后我们用一个变量记录累乘的结果,然后位权为1的时候我们就将ans更新即可,详情可以看我这一篇博客:https://acmer.blog.csdn.net/article/details/122280910
代码#include
using namespace std;
#define ll long long
int n;
ll a,b,p;
ll ksm(ll a,ll b,ll p){
ll ans = 1LL;
while(b) {
if(b & 1) ans = (ans * a) % p;
b >>= 1; a = (a * a) % p;
}
return ans;
}
int main()
{
scanf("%d",&n);
while(n--){
scanf("%lld %lld %lld",&a,&b,&p);
printf("%lld\n",ksm(a,b,p));
}
return 0;
}