#include<bits/stdc++.h>
using namespace std;
#define ll long long

long long quickpow1(long long a, long long b,long long p) {
    long long ret = 1;
    while (b) {
        if (b & 1) {
            ret = ret * a%p;
        }
        a = a*a%p;
        b >>=1;
    }
    return ret;
}
int main()
{
    ll q;
    cin>>q;
    while(q--)
    {
        ll  a,b,p;
        cin>>a>>b>>p;
        cout<<quickpow1(a,b,p)<<endl;
    }
    return 0;
}
快速幂算人人都必须要会的东西了
非常的好用,他的思想和套路都是!
基本思路:
  • 1 如果y=0
  • 2.xx^(y-1) 如果y为奇数
  • 3.(x^2)^(y div 2) 如果y为偶数
同时,对于模运算有一个重要结论:AB%K=(A%K)*(B%K)%K
就这样,我们就可以用快速幂的递归思想,去快速计算b^p%k的值。去避免高精度。