#include <stdio.h> //两个关键点, (a*b)mod q = (a mod q)*(b mod q) mod q; // a^n (n>=2) = a^n/2 * a^n/2 (单数情况见代码) unsigned long long quick(unsigned long long a, unsigned long long b, unsigned long long q) { if (b == 0) { return 1; } if (b == 1) { return a % q; } unsigned long long k = quick(a, b / 2, q) % q; if (b % 2) { // 单数 return ((k * k) % q * (a % q)) % q; } else { // 双数 return k * k % q; } } int main() { int times; scanf("%d",×); while(times--){ unsigned long long a, b, q; scanf("%lld%lld%lld", &a, &b, &q); printf("%lld\n", quick(a, b, q)); } return 0; }