enc
【问题背景】
zhx 和他的妹子聊天。
【问题描述】
考虑一种简单的加密算法。
假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映
射到另一个字母。例如考虑映射规则:
a->b, b->c, c->d, d->a. 那么单词 bad 就会被映射为 cba。这个映射规则的“逆
映射规则”为:b->a, c->b, d->c, a->d。对于密文 cba,我们很容易将它解密为 bad。
当然,这样的映射需要保证每一个字母映射到的字母是不同的(即不可以出
现两个不同的字母映射到同一个字母,否则将会无法解密)。
一种常见的密码攻击方式被称为已知明文攻击。具体地,在你不知道映射表
的情况下,给你一段明文和对应的密文,你可以推导出一些的映射规则,下一次
你收到一条密文,你就可能可以解密它。现在你需要完成这样的一个系统。
【输入格式】
第一行包含一个字符串,仅包含小写字母,表示一段明文。
第二行包含一个字符串,仅包含小写字母,表示这段明文对应的密文,保证
两行长度相同。
第三行包含一个字符串,仅包含小写字母,表示你需要解密的密文。
【输出格式】
输出共一行,表示输入中第三行密文对应的明文。如果不能解密,输出
“ERROR”(不包含引号)。注意输入可能出现不自恰的情况。
【样例输入】
ab
cc
cc
【样例输出】
ERROR
【样例输入】
ab
ab P69 enc
第 3 页 共 6 页
c
【样例输出】
ERROR
【样例输入】
abcde
bcdea
cad
【样例输出】
bec

【数据范围与规定】
对于100%的数据,所有字符串长度<=1000。

//代码丑的被JustPenz233狂吐槽
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char a[],b[],c[];
int len1,len2;
bool flag=;
int zh[];
void zhuanhuan()
{
memset(zh,,sizeof(zh));
int x,y;
for(int i=;i<=len1;i++)
{
x=b[i]-'a'+;
y=a[i]-'a'+;
if(zh[x]==)
zh[x]=y;
else if(zh[x]!=y)// 这里flag为1,只有当x在前面出现过并且他之前所对应的明文与此次出现的明文不相同时
flag=;
}
int cnt=;//这个点很神,当25个字母全都对应之后,剩下的两个一定匹配。
if(flag==)
{
for(int i=;i<=;i++)
if(zh[i]!=)
cnt++;
if(cnt==)
for(int i=;i<=;i++)
if(zh[i]==)
for(int k=;k<=;k++)
{
bool flag=;
for(int j=;j<=len1;j++)
{
if(a[j]-'a'+==k) flag=;
if(flag==&&j==len1)
{
zh[i]=k;
return ;
}
}
}
}
}
int main()
{
freopen("enc.in","r",stdin);
freopen("enc.ans","w",stdout);
scanf("%s",a+);
scanf("%s",b+);
scanf("%s",c+);
len1=strlen(a+);
len2=strlen(c+);
zhuanhuan();
if(flag==)
printf("ERROR");
else
{
for(int i=;i<=len2;i++)
{
int x=c[i]-'a'+;
if(zh[x]==)
{
printf("ERROR");
break;
}
else
{
char p;
p=zh[x]-+'a';
printf("%c",p);
}
}
}
fclose(stdin);fclose(stdout);
return ;
}

最新文章

  1. mvc学习中的问题汇总
  2. chrome &#39;adobe flash player 已过期&#39;解决方法
  3. Android.mk 基本应用
  4. ABAP绘图功能模块概观(转)
  5. Golang操作数据库
  6. [Android]GOF23种设计模式 &amp; Android中的设计模式
  7. 无废话ExtJs 入门教程十四[文本编辑器:Editor]
  8. PHP学习笔记:keditor的使用
  9. Android 和iOS中 Gesture 和 Touch
  10. mysql 特殊字符
  11. Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片
  12. 安装Maven、nexus
  13. Java学习——static关键字
  14. 面向方面编程(AOP)
  15. linux基础 作业篇
  16. fineuploader使用实例
  17. vue项目中编写一个图片预览的公用组件
  18. hdu-2328(暴力枚举+kmp)
  19. mybatis_异常
  20. ubuntu下用nvm配置好nodejs环境

热门文章

  1. HDU 4063 Aircraft(计算几何)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
  2. User Managerment 职责不能使用的问题
  3. 夺命雷公狗---DEDECMS----11dedecms字段标签
  4. C语言初学者代码中的常见错误与瑕疵(19)
  5. 用javascript在客户端删除某一个cookie键值对
  6. NOIP201208同余方程
  7. ADB server didn&#39;t ACK的解决方法
  8. Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime
  9. 由于 add 运算符中“Chinese_PRC_CI_AS”和“Chinese_PRC_CS_AS_WS”之间的排序规则冲突
  10. scala特质