import java.util.Scanner;
/**
* 实现Implement pow(A, B) % C.In other words, given A, B and C, find (A^B)%C
*
*/
public class Main {
static Scanner in=new Scanner(System.in);
public static void main(String args[]){
int T=in.nextInt();
int A;
int B;
int C;
for(int i=0;i<T;i++){
A=in.nextInt();
B=in.nextInt();
C=in.nextInt();
System.out.println( cal(A,B,C));
}
}
public static int cal(int a,int b,int c){
/* if(b==0) return 1%c;*/
if(b<0){
int re=cal(a,-b,c);
if(re!=0){
return 1/re;
}
return -1; //这个时候不存在
}
return fun1(a,b,c);
}
/**
* 实现 pow(A, B) % C
* 如果b是偶数 那么 a^b=[a^(b/2)] * [a^(b/2)]
* 如果b是奇数 那么 a^b=[a^(b-1)]*a
* 如果a=0; 返回0
* 如果b=0;返回0;
*
* @param a
* @param b
* @param c
* @return
*/
private static int fun(int a,int b,int c){
if(b==1) return a%c;
if(b%2==0){
return fun(a,b/2,c)*fun(a,b/2,c)%c;
}
return fun(a,b-1,c)*a%c;
}
/**
* 实现 pow(A, B) % C
* 如果b是偶数 那么 a^b=[a^(b/2)] * [a^(b/2)]
* 如果b是奇数 那么 a^b=[a^(b/2)] * [a^(b/2)]*a
* 如果a=0; 返回0
* 如果b=0;返回0;
*
* @param a
* @param b
* @param c
* @return
*/
private static int fun1(int a,int b,int c){
if(b==1) return a%c;
if(b%2==0){
return fun1(a,b/2,c)*fun1(a,b/2,c)%c;
}
return fun1(a,b/2,c)*fun1(a,b/2,c)*a%c%c;
}
}
取模技巧
(ab)%c=(a%c)(b%c)%c