- 潜伏者
- 2018-02-10 23:22:49 @
#include<bits/stdc++.h>
using namespace std;
int main(){
string s1,s2,s3;
cin>>s1>>s2>>s3;
char s4[s3.length()];
for(int i=0;i<s3.length();i++){
bool bo=0;
for(int j=0;j<s1.length();j++){
if(s3[i]==s1[j]){
s4[i]=s2[j];
bo=1;
break;
}
}
if(bo==0){
cout<<"Failed(2)";
return 0;
}
}
for(int i=0;i<s3.length();i++){
for(int j=0;j<s3.length();j++){
if((s4[i]==s4[j])^(s3[i]==s3[j])){
cout<<"Failed(3)";
return 0;
}
}
}
for(int i=0;i<s3.length();i++)
cout<<s4[i];
}
2 条评论
-
node_js LV 4 @ 2021-10-17 21:04:49
注意题目中有两条:
1. 所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
2. 扫描中发现掌握的信息里有明显的自相矛盾或错误(违反 S国密码的编码规则)。例如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。所以要注意有没有密文字母没有出现过,而不是仅仅判断有没有需要破译的密文字母没有出现过,并且要判断有没有明文对应的密文重复,而不仅仅是密文对应的明文重复。
-
2018-02-10 23:23:09@
求大佬解答
- 1