思路

这道题大家都在用快速乘,我用int128就过了。
记得要重载输入输出,然后加个快速幂就好了。

代码

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

int fpow(int a,int b,int p){
    int res=1;
    while(b){
        if(b&1) res=res*a%p;
        a=a*a%p;
        b>>=1;
    }
    return res%p;
}

inline void read(int &data){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    data=x*f;
}

void write(int x){
    if(x>9) write(x/10);
    putchar(x%10+'0');
}

signed main(){
    int t,a,b,p;
    read(t);
    while(t--){
        read(a);read(b);read(p);
        write(fpow(a,b,p));
        printf("\n");
    }
    return 0;
}