- 潜伏者
- 2017-11-06 21:48:31 @
Q和A对应时就过不了
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct ABC
{
char x;
char y;
}w[101];
char a[200],b[200],c[200],d[200];
char g[27];
int main()
{
cin>>a>>b>>c;
int n=strlen(a),m=strlen(c);
for(int i=1;i<=n;i++)
{
w[i].x=a[i];
w[i].y=b[i];
}
memset(g,0,sizeof(g));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if((a[i]==a[j]&&b[i]!=b[j])||(a[i]!=a[j]&&b[i]==b[j]))
{cout<<"Failed";return 0;}
}
for(int i=1;i<=n;i++)
g[w[i].x-64]=w[i].y;
for(int i=1;i<=26;i++)
if(g[i]==0)
{
cout<<"Failed";
return 0;
}
for(int i=0;i<m;i++)
{
d[i]=g[c[i]-64];
}
d[m]='\0';
puts(d);
}
1 条评论
-
node_js LV 4 @ 2021-10-17 21:04:59
注意题目中有两条:
1. 所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
2. 扫描中发现掌握的信息里有明显的自相矛盾或错误(违反 S国密码的编码规则)。例如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。所以要注意有没有密文字母没有出现过,而不是仅仅判断有没有需要破译的密文字母没有出现过,并且要判断有没有明文对应的密文重复,而不仅仅是密文对应的明文重复。
- 1