a^b^ %c
瓜分b的时候,分奇偶。偶数再分到最后,就只剩下1这一个奇数。
#include<bits/stdc++.h>
using namespace std;
long long fast(long long base, long long power,long long c) {
long long result = 1;
while (power > 0) {
if (power % 2 == 0) {
//如果指数为偶数
power = power / 2;//把指数缩小为一半
base = base * base % c;//底数变大成原来的平方
} else {
//如果指数为奇数
power = power - 1;//把指数减去1,使其变成一个偶数
result = result * base % c;//此时记得要把指数为奇数时分离出来的底数的一次方收集好
power = power / 2;//此时指数为偶数,可以继续执行操作
base = base * base % c;
}
}
return result;
}
int main()
{
int c;
//freopen("9.in","r",stdin);
scanf("%d",&c);
for(int i=1;i<=c;i++){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
long long result =fast(a,b,c);
cout<<result<<endl;
}
return 0;
}