这就是一个简单快速幂,但是还是哇了几发,主要是后来才看那个数值范围。mol为10的6次方,然后如果极限条件的话就是两个10的6次方-1的数相乘,然后就会爆int。所以还是开个long long吧
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
void work(long long a , long long n ,long long m)
{
long long res = 1;
while(n){
if(n & 1) res = (res * a) % m;
a = ((a % m)*(a % m)) % m;
n >>= 1;
}
printf("%d\n",res);
}
int main()
{
long long t;
scanf("%I64d",&t);
while(t--){
int a , n , m;
scanf("%d%d%d",&a , &n , &m);
work(a , n ,m);
}
return 0;
}