#include <stdio.h> #include <stdlib.h> #include <math.h> int main () { int p, q, e, l,i,j,d; __int64 n, Fn; while ( scanf ("%d%d%d%d", &p, &q, &e, &l) != EOF ) { n = p * q; Fn = (p -1) * (q - 1); //利用枚举法求d d = 1; while ( (d * e) % Fn != 1) d ++; int c, temp; for (i = 0; i < l; i++) { scanf("%d", &c); temp = 1; for (j = 1; j <= d; j++) //难点:如何利用数论知识处理计算 (c 的 d 次方) % n; //上式等于 (c % n) d 次方 % n; { temp *= c; temp %= n; } printf ("%c",temp); } printf ("\n"); } return 0; }