题目
将题目进行总结:
输入:第一行:密文;
第二行:明文;
第三行:所破译的密文;
再列下需输出“Failed”的情况:
1.26个字母没有全部出现。
2.一个密文有多个明文。
3.一个明文有多个密文。
判断所有情况后输出破译答案。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[1100];
char b[1100];
char c[30];
char d[1100];
bool e[30];
char ans[1100];
int l1,l2,num,f;
int main()
{
cin>>a;
cin>>b;
l1=strlen(a);
for(int i=0;i<l1;i++)
{
int x=a[i]-'A'+1;
if(!c[x])
{
c[x]=b[i];num++;
int y=b[i]-'A'+1;
if(e[y])
{
printf("Failed");return 0;
}
e[y]=1;
}
else
{
char y=c[x];
c[x]=b[i];
if(y!=c[x])
{
f=1;break;
}
}
}
if(num<26) f=1;
cin>>d;
l2=strlen(d);
for(int i=0;i<l2;i++)
{
int x=d[i]-'A'+1;
if(!c[x])
{
f=1;break;
}
ans[i]=c[x];
}
if(f==1) printf("Failed");
else
for(int i=0;i<l2;i++)
{
cout<<ans[i];
}
return 0;
}