题目链接:点击打开链接
水题
先枚举出d,再快速幂算出结果
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define ll long long
using namespace std;
ll p,q,e,l,f,d,n;
void init(){
f=(p-1)*(q-1);
n=p*q;
d=0;
ll cur=e;
while((d*e)%f!=1){
d++;
}
}
ll fastmul(ll a,ll n,ll m){
ll tmp=a,res=1;
while(n){
if(n&1){
res*=tmp;
res%=m;
}
tmp*=tmp;
tmp%=m;
n>>=1;
}
return res;
}
int main(){
while(~scanf("%I64d%I64d%I64d%I64d",&p,&q,&e,&l)){
init();
for(ll i=1;i<=l;i++){
ll t;
scanf("%I64d",&t);
char ch=char(fastmul(t,d,n));
printf("%c",ch);
}
printf("\n");
}
return 0;
}