2009 潜伏者

潜伏者

题目描述

【问题描述】
R 国和S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。
历尽艰险后,潜伏于 S 国的R 国间谍小C 终于摸清了S 国军用密码的编码规则:
1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所
得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符)。
2. S 国对于每个字母规定了对应的“密字”。加密的过程就是将原信息中的所有字母替
换为其对应的“密字”。
3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”。“密字”可以
和原字母相同。
例如,若规定‘A’的密字为‘A’,‘B’的密字为‘C’(其他字母及密字略),则原信
息“ABA”被加密为“ACA”。
现在,小 C 通过内线掌握了S 国网络上发送的一条加密信息及其对应的原信息。小C
希望能通过这条信息,破译S 国的军用密码。小C 的破译过程是这样的:扫描原信息,对
于原信息中的字母x(代表任一大写字母),找到其在加密信息中的对应大写字母y,并认为
在密码里y 是x 的密字。如此进行下去直到停止于如下的某个状态:
1. 所有信息扫描完毕,‘A’-‘Z’ 所有 26 个字母在原信息中均出现过并获得了相应
的“密字”。
2. 所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
3. 扫描中发现掌握的信息里有明显的自相矛盾或错误(违反S 国密码的编码规则)。例
如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。
在小 C 忙得头昏脑涨之际,R 国司令部又发来电报,要求他翻译另外一条从S 国刚刚
截取到的加密信息。现在请你帮助小C:通过内线掌握的信息,尝试破译密码。然后利用破
译的密码,翻译电报中的加密信息。

输入描述

第 1 行为小C 掌握的一条加密信息。
第 2 行为第1 行的加密信息所对应的原信息。
第 3 行为R 国司令部要求小C 翻译的加密信息。
输入数据保证所有字符串仅由大写字母‘A’-‘Z’构成,且第1 行长度与第2 行相等。

输出描述

若破译密码停止时出现 2,3 两种情况,请你输出“Failed”(不含引号,注意首字母大
写,其它小写)。
否则请输出利用密码翻译电报中加密信息后得到的原信息。

样例输入

【输入输出样例 1】
AA
AB
EOWIE

【输入输出样例 2】

QWERTYUIOPLKJHGFDSAZXCVBN

ABCDEFGHIJKLMNOPQRSTUVWXY

DSLIEWO

【输入输出样例 3】
MSRTZCJKPFLQYVAWBINXUEDGHOOILSMIJFRCOPPQCEUNYDUMPP
YIZSDWAHLNOVFUCERKJXQMGTBPPKOIYKANZWPLLVWMQJFGQYLL
FLSO

样例输出

【输入输出样例 1】
Failed

【输入输出样例 2】

Failed

【输入输出样例 3】
NOIP

数据范围及提示

【输入输出样例 1 说明】
原信息中的字母‘A’和‘B’对应相同的密字,输出“Failed”。

【输入输出样例2 说明】
字母‘Z’在原信息中没有出现,输出“Failed”。

//模拟;
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int sz[30]={0},yx[30]={0},n;
char s1[1002],s2[1002],s[1002];
int main(){
    scanf("%s%s",s1,s2);
    n=strlen(s1);
    for(int i=0;i<n;i++){
        if(sz[s1[i]-‘A‘]==0||sz[s1[i]-‘A‘]==s2[i]) sz[s1[i]-‘A‘]=s2[i];//不同字母对应不同密字,26个字母一一对应;
        else{
            printf("Failed\n");
            return 0;
        }
        if(yx[s2[i]-‘A‘]==0||s1[i]==yx[s2[i]-‘A‘]) yx[s2[i]-‘A‘]=s1[i];//同上;
        else{
            printf("Failed\n");
            return 0;
        }
    }
    scanf("%s",s);
    n=strlen(s);
    for(char q=‘A‘;q<=‘Z‘;q++)
        if(yx[q-‘A‘]==0){      //26个字母必须都有对应密字;
            printf("Failed\n");
            return 0;
        }
    for(int i=0;i<n;i++){
        putchar(sz[s[i]-‘A‘]);
    }
    return 0;
}

时间: 2024-10-10 22:18:22

2009 潜伏者的相关文章

潜伏者

题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符). 2. S 国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”. 3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”.“密字”可以

BZOJ 2038: [2009国家集训队]小Z的袜子(hose)

2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7676  Solved: 3509[Submit][Status][Discuss] Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只

AC日记——潜伏者 洛谷 P1071 (模拟)

题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符). 2. S 国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”. 3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”.“密字”可以

[NOIP2009] 提高组 洛谷P1071 潜伏者

题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符). 2. S 国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”. 3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”.“密字”可以

HDU 2617 Happy 2009

Happy 2009 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2757    Accepted Submission(s): 922 Problem Description No matter you know me or not. Bless you happy in 2009. Input The input contains

hdu2005~2009

hdu 2005 给定一个日期,输出这个日期是该年的第几天. 水……可能主要是分类讨论烦一点吧 1 #include<stdio.h> 2 int main() 3 { 4 int year,month,day,d=0,i; 5 int m[12]={31,28,31,30,31,30,31,31,30,31,30,31}; 6 while (scanf("%d/%d/%d",&year,&month,&day)!=EOF) 7 { 8 for (i

九度oj 1034 寻找大富翁 2009年浙江大学计算机及软件工程研究生机试真题

题目1034:寻找大富翁 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5323 解决:2123 题目描述:     浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁. 输入:     输入包含多组测试用例.    每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.    n和m同时为0时表示输入结束. 输出:     请输出乌镇前m个大富翁的财产数,财产多的

老IT人-5年前的预言(2009年9月)--历史远比预想的要复杂

  按:5年前写的文章(2009年9月)--历史比想象的要复杂,但历史不可改变 <linux-2.6.31/arch/arm/下的故事>,于近日完成,与大家分享!     历史的痕迹:在最新的linux-2.6.31/arch/arm/文件夹下,仍然保留Linux最初向ARM处理器移植的痕迹,最初的移植由黑客完成,在老的移植的代码文件的头部保留着黑客的名字:最初的ARM也不像现在这样的先进,都是StrongARM.ARM7之类,具体文件夹如mach-sa1100.mach-shark.mach

兰州大学2009年数学分析考研试题参考解答

1计算. (1)  \dps{ \lim_{x\to 0}\frac{\int_0^{x^2}\sin^\frac{3}{2}t\rd t}{\int_0^xt\sex{t-\sin t}\rd t} } . 解答: \bex \mbox{原式}&=&\lim_{x\to 0}\frac{2x\sin^\frac{3}{2}x^2}{x\sex{x-\sin x}}\\ &=&\lim_{x\to 0}\frac{2x^4}{x\cdot\frac{x^3}{6}}\\ &