#P2159. Ancient Cipher
Ancient Cipher
古罗马密码加密验证问题
题目描述
古罗马帝国拥有强大的政府系统,设有多个部门,包括一个特勤局部门。重要文件以加密形式在省份和首都之间发送,以防止窃听。当时最流行的密码是所谓的替换密码和排列密码。
替换密码将每个字母出现的所有字母更改为其他字母。所有字母的替代品必须不同。对于某些字母,替代字母可能与原始字母一致。例如,应用替换密码,将字母表中从“A”更改为“Y”的所有字母,并将“Z”更改为“A”,将消息“VICTORIOUS”更改为“VICTORIOUS”,则得到消息“WJDUPSJPVT”。
排列密码对消息的字母应用一些排列。例如,将排列 <2, 1, 5, 4, 3, 7, 6, 10, 9, 8> 应用于消息 “VICTORIOUS”,得到消息 “IVOTCIRSUO”。
很快注意到,单独应用时,替换密码和排列密码都相当弱。但是当它们结合在一起时,它们在那个时代已经足够强大了。因此,首先使用替换密码对最重要的消息进行加密,然后使用排列密码对结果进行加密。使用上述密码的组合加密消息 “VICTORIOUS” 会得到消息 “JWPUDJSTVP”。
考古学家最近在一块石板上发现了刻有这条信息的信息。乍一看,它似乎完全没有意义,因此建议该消息使用一些替换和排列密码进行加密。他们已经猜想了加密的原始消息的可能文本,现在他们想检查他们的猜想。他们需要一个计算机程序来做到这一点,所以你必须编写一个。
输入格式
输入包含两行。
- 第一行包含刻在盘子上的信息。在加密之前,所有空格和标点符号都已删除,因此加密的消息仅包含英文字母的大写字母。
- 第二行包含第一行的消息中推测要加密的原始消息。它也只包含英文字母的大写字母。
输入的两行长度相等,且不超过 100。
输出格式
如果输入文件第一行的消息可能是加密第二行消息的结果,则输出 “YES”,否则输出 “NO”。
输入数据 1
JWPUDJSTVP
VICTORIOUS
输出数据 1
YES
源于
东北欧 2004