enc
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 ;
}
enc的更多相关文章
- 7.openssl enc
对称加密工具.了解对称加密的原理后就很简单了. [root@xuexi tmp]# man enc NAME enc - symmetric cipher routines SYNOPSIS open ...
- openssl enc 加解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- openssl 对称加密算法enc命令详解
1.对称加密算法概述 openssl的加密算法库提供了丰富的对称加密算法,我们可以通过openssl提供的对称加密算法指令的方式使用,也可以通过调用openssl提供的API的方式使用. openss ...
- openssl enc(对称加密)
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 对称加密工具.了解对称加密的原理后就很简单了,原理部分见下文. openss ...
- noip模拟题《迷》enc
[问题背景]zhx 和他的妹子聊天.[问题描述] 考虑一种简单的加密算法. 假定所有句子都由小写英文字母构成, 对于每一个字母, 我们将它唯一地映射到另一个字母.例如考虑映射规则:a- ...
- powershell -enc参数无法解码base64编码payload的解决方案
powershell的-enc参数允许传入一个base64编码过的powershell脚本字符串作为参数来执行该powershell脚本,该方法常被用于绕过杀毒软件的主动防御机制. 今天下午在做一个后 ...
- Openssl enc命令
一.简介 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理.算法有流算法和分组加密算法,流算法是逐字节加,由于其容易被破译,现在已很少使用:分组加密算法是将数 ...
- (9) openssl enc(对称加密)
对称加密工具,了解对称加密的原理后就很简单了,原理部分见下文. openssl enc -ciphername [-in filename] [-out filename] [-pa ...
- 配置文件的属性ENC加密
转载:https://www.cnblogs.com/zqyx/p/9687136.html 在micro service体系中,有了config server,我们可以把配置存放在git.svn.数 ...
随机推荐
- mysql之触发器before和after的区别
我们先做个测试: 接上篇日志建的商品表g和订单表o和触发器 假设:假设商品表有商品1,数量是10: 我们往订单表插入一条记录: insert into o(gid,much) values(1,20) ...
- 杭电oj 1016 Prime Ring Problem
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON OverpaintRegion2
zw版[转发·台湾nvp系列Delphi例程]HALCON OverpaintRegion2 unit Unit1;interfaceuses Windows, Messages, SysUtils, ...
- 我的代码观——关于ACM编程风格与librazy网友的对话
序 在拙文 <高手看了,感觉惨不忍睹——关于“[ACM]杭电ACM题一直WA求高手看看代码”>中,我对ACMer们的一些代码“惯例”发表了我的看法, librazy网友在评论中给出了他的一 ...
- WordPress博客网站fonts.useso加载慢解决办法
WordPress博客网站fonts.useso加载慢解决办法 之前WordPress博客因为google字体库访问不了替换成360的useso,最近WordPress博客网站一直等待fonts.us ...
- LUA之面向对象
Account = { balance=0, withdraw = function (self, v) self.balance = self.balance - v end } function ...
- jQuery DataTable-JavaScript API
虽然大多数时候你的Javascript交互将通过使用datatable初始化对象作为描述在使用这个网站的部分,有时,你会发现它有用一些外部控制表.可以使用以下函数从jQuery.dataTable对象 ...
- [转]Windows配置Git
原文地址:http://blog.csdn.net/exlsunshine/article/details/18939329 1.从git官网下载windows版本的git:http://git-sc ...
- Docker第三方项目小结
软件项目的成功常常根据其催生的生态系统来衡量.围绕或基于核心技术构建的项目增添了功能和易用性,它们常常日臻完善.Docker就是一个典例,有众多第三方项目扩展.补充或改进Docker. •Docker ...
- Readonly和disabled的区别 display:none和visible:hidden的区别
怎样使input中的内容为只读,也就是说不让用户更改里面的内容. <input type="text" name="input1" value=" ...