(Java实现) 洛谷 P1071 潜伏者
题目描述
R国和 S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。历尽艰险后,潜伏于 S国的 R 国间谍小 C终于摸清了 S 国军用密码的编码规则:
1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符)。
2. S S国对于每个字母规定了对应的“密字”。加密的过程就是将原信息中的所有字母替换为其对应的“密字”。
3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”。“密字”可以和原字母相同。
例如,若规定‘A’的密字为‘A’,‘B’的密字为‘C’(其他字母及密字略),则原信息“ABA”被加密为“ACA”。
现在,小 C 通过内线掌握了 S 国网络上发送的一条加密信息及其对应的原信息。小 CC希望能通过这条信息,破译 S 国的军用密码。小 C 的破译过程是这样的:扫描原信息,对于原信息中的字母 x(代表任一大写字母),找到其在加密信息中的对应大写字母 y,并认为在密码里 y是 x的密字。如此进行下去直到停止于如下的某个状态:
1. 所有信息扫描完毕,‘A’-‘Z’ 所有 26个字母在原信息中均出现过并获得了相应的“密字”。
2. 所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
3. 扫描中发现掌握的信息里有明显的自相矛盾或错误(违反 S 国密码的编码规则)。例
如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。
在小 C 忙得头昏脑涨之际,R 国司令部又发来电报,要求他翻译另外一条从 S国刚刚截取到的加密信息。现在请你帮助小 C:通过内线掌握的信息,尝试破译密码。然后利用破译的密码,翻译电报中的加密信息。
输入输出格式
输入格式:
共 3 行,每行为一个长度在 1 到 100之间的字符串。
第 1 行为小 C 掌握的一条加密信息。
第 2 行为第 1 行的加密信息所对应的原信息。
第 3行为 R国司令部要求小 C 翻译的加密信息。
输入数据保证所有字符串仅由大写字母‘A’-‘Z’构成,且第 1行长度与第 2行相等。
输出格式:
共 1 行。
若破译密码停止时出现 2,3 两种情况,请你输出“Failed”(不含引号,注意首字母大
写,其它小写)。
否则请输出利用密码翻译电报中加密信息后得到的原信息。
输入输出样例
输入样例#1: 复制
AA
AB
EOWIE
输出样例#1:
Failed
输入样例#2:
QWERTYUIOPLKJHGFDSAZXCVBN
ABCDEFGHIJKLMNOPQRSTUVWXY
DSLIEWO
输出样例#2:
Failed
输入样例#3:
MSRTZCJKPFLQYVAWBINXUEDGHOOILSMIJFRCOPPQCEUNYDUMPP
YIZSDWAHLNOVFUCERKJXQMGTBPPKOIYKANZWPLLVWMQJFGQYLL
FLSO
输出样例#3:
NOIP
说明
【输入输出样例 1 1说明】
原信息中的字母‘AA’和‘BB’对应相同的密字,输出“Failed”。
【输入输出样例 2 2说明】
字母‘Z’在原信息中没有出现,输出“Failed”。
NOIP 2009 提高组 第一题
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;public class qianfuzhe {public static void main(String[] args) {boolean flag = false;Map<Character,Character> map = new HashMap<Character,Character>();Scanner sc =new Scanner(System.in);String s = sc.nextLine();String ss = sc.nextLine();String sss = sc.nextLine();sc.close();char [] num1 = s.toCharArray();char [] num2 = ss.toCharArray();char [] num3 = sss.toCharArray();for (int i = 0; i < num2.length; i++) {if(num1[i]==' ') continue;if(map.containsKey(num1[i]) && map.get(num1[i])!=num2[i]){flag=true;}map.put(num1[i], num2[i]);}Set<Character> set2=map.keySet();Set<Character> set1 = new HashSet<Character> (map.values());if(set1.size()!=26 ||set2.size()!=26 ){flag=true;}if(flag){System.out.println("Failed");System.exit(0);}String str = "";for (int i = 0; i < num3.length; i++) {if(num3[i]==' ') continue;Character s1 = map.get(num3[i]);str = str + s1;}System.out.println(str);}}
(Java实现) 洛谷 P1071 潜伏者相关推荐
- 洛谷P1071 潜伏者 字符串
洛谷P1071 潜伏者 字符串 题意 给出一段密文,在给出一段明文,再给出一段密文,要求破译这段密文, 如果错误的话就输出 Failed 错误有一下几种 密文中A--Z 没有全部出现 明文中A--Z ...
- 洛谷 P1071 潜伏者
P1071 潜伏者 题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S ...
- 洛谷——P1071 潜伏者
题目描述 RR国和SS国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于SS国的RR 国间谍小CC终于摸清了 SS 国军用密码的编码规则: 1. SS国军方内部欲发送的原信息 ...
- 信息学奥赛一本通 1855:【09NOIP提高组】潜伏者 | OpenJudge NOI 1.7 11:潜伏者 | 洛谷 P1071 [NOIP2009 提高组] 潜伏者
[题目链接] ybt 1855:[09NOIP提高组]潜伏者 OpenJudge NOI 1.7 11:潜伏者 洛谷 P1071 [NOIP2009 提高组] 潜伏者 [题目考点] 1. 字符串 2. ...
- Java实现洛谷 P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...
- 潜伏者与谍报密码(洛谷P1071题题解,Java语言描述)
题目要求 P1071题目链接 分析 这道题其实要构建唯一的双射,开始没读明白,写出了下面的代码: import java.util.HashMap; import java.util.Map; imp ...
- 潜伏者(洛谷-P1071)
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...
- AC日记——潜伏者 洛谷 P1071 (模拟)
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...
- Java实现 洛谷 P1064 金明的预算方案
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元 ...
最新文章
- python学习day24 继承 派生
- 使用功能开关更好地实现持续部署
- CentOS 6.8 安装 RabbitMQ
- java五子棋以当前空位为中心 取9个点_java 五子棋有点问题,哪位帮忙破一下、、...
- [jQuery]点击某元素之外触发事件
- 火爆 GitHub 的 16 张机器学习速查表,值得收藏!
- 连接CPU和计算机的总线,什么是计算机总线 总线和接口的区别
- 查询附近的人——GEO
- mediasoup 安裝
- php中颜色的索引值,PHP imagecolorsforindex - 取得某索引的颜色
- PowerPC 汇编
- 88页《Redis学习文档》,从入门到精通,看这一篇就足够
- RPA案例 | 电商使用超自动化平台提升运营精细化
- 详解文件存储空间管理中的位示图法
- 太用力的人跑不远[致刚毕业奋斗的自己,永不止步]
- Eclipse配置Python的IDE
- ThreadLocal.withInitial
- python 对角矩阵_numpy创建单位矩阵和对角矩阵的实例
- m1芯片安装PS2021 已经支持M1芯片安装 M1处理器安装PS2021解决方案教程,2021最新方法!
- end-end是什么
热门文章
- 第50讲-基础练习-作业讲解
- oracle hibernate 主键,hibernate oracle 主键 自增
- anaconda怎么设置中文界面?anaconda设置中文界面技巧
- [超详细]MySQL本地版本升级(从5.5.20到8.0.21)
- 后台服务出现明显“变慢”诊断思路
- js给input赋值无效的问题
- 迅为i.MX6Q开发板快速上手【必看】
- 【设计模式自习室】透彻理解单例模式
- java毕业生设计抑郁症患者博客交流平台计算机源码+系统+mysql+调试部署+lw
- 关于iOS证书申请及安装流程