威廉同志的暴走
(就是我们敬爱的威廉·克梅修同志经常使用的暴走能力,虽然没有白井和女仆的快,将就一下吧!)
这除了是一道水题,就是一道水题。
直接模拟就好了。
不过注意,对于法则2,是密文和明文一一对应,不是单射或满射。
代码如下:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
char sec[105],ori[105],text[105];
char rule[30];
int vis[30];
int get;
int main(){
get=0;
memset(rule,0,sizeof(rule));
memset(vis,0,sizeof(vis));
scanf("%s",sec);
scanf("%s",ori);
int n=strlen(sec);
for(int i=0;i<n;i++){
if(rule[sec[i]-'A']==0){
rule[sec[i]-'A']=ori[i];
vis[ori[i]-'A']=1;
get++;
}else{
if(rule[sec[i]-'A']!=ori[i]){
printf("Failed");
return 0;
}
}
}
if(get!=26){
printf("Failed");
return 0;
}
for(int i=0;i<26;i++){
if(!vis[i]){
printf("Failed");
return 0;
}
}
scanf("%s",text);
n=strlen(text);
for(int i=0;i<n;i++){
printf("%c",rule[text[i]-'A']);
}
return 0;
}