首页 > 其他 > 详细

长者的妹子(迷)

时间:2017-10-17 10:44:27      阅读:269      评论:0      收藏:0      [点我收藏+]

【 问题背景】

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

ab 
ab 
c

abcde 
bcdea 
cad

【样例输出】

ERROR 
ERROR 
bec

【数据范围与规定】

对于100%的数据, 所有字符串长度<=1000。

 

 

首先,显然这是一个非常裸的模拟题,就是注意一下给出了25个字母的密文余下一个字母也就能解密的情况,以及处理不自洽。but,作为一个智障呢,我的q数组越界篡改了我的b数组,所以拿了一个奇奇怪怪的分数,50。btw,出题人很良心,输出ERROE有30分哦。

#include<cstdio>
#include<cstring>

char a[30];
bool q[30];
char b[1010];
char d[1010];
char j[1010];
char ans[1010];

int main()
{
//    freopen("enc.in","r",stdin);
//    freopen("enc.out","w",stdout);
    int sum=0;
    scanf("%s\n%s",b,d);
    memset(a,0,sizeof(a));
    memset(q,0,sizeof(q));
    int len=strlen(b);
    for(int i=0;i<len;++i) {
        //printf("%s  %s\n",b,d);
        int t=d[i]-a;
        if(a[t]!=0&&a[t]!=b[i]) {
            printf("ERROR");
            return 0;
        }
        if(a[t]==0) {
            ++sum;
            q[b[i]-a]=true;//就是这里傻子写了一个-‘0’
        }
        a[t]=b[i];
    }
    if(sum==25) {
        int x,y;
        for(int i=0;i<26;++i) {
            if(a[i]==0) {
                x=i;
                break;
            }
        }
        for(int i=0;i<26;++i) {
            if(!q[i]) y=i;
        }
        a[x]=y+a;
    }
    scanf("%s",j);
    len=strlen(j);
    for(int i=0;i<len;++i) {
        if(a[j[i]-a]==0) {
            printf("ERROR");
            return 0;
        }
        else ans[i]=a[j[i]-a];
    }
    for(int i=0;i<len;++i)
        printf("%c",ans[i]);
    printf("\n");
    return 0;
}

 

长者的妹子(迷)

原文:http://www.cnblogs.com/wykjx1314/p/7680013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!