返回首页 返回题库

凯撒密码

C++ 简单 GESP三级真题 #字符串#简单加密

题目描述

题面描述

凯撒密码是⼀种替换加密技术,明⽂中的所有字母都在字母表上向后(或向前)按照⼀个固定数⽬进⾏偏移后被替换成密⽂。例如,当偏移量是3的时候,所有的字母A将被替换成D,B被替换成E,C被替换成F,以此类推,W被替换成Z,X被替换成A,Y被替换成B,Z被替换成C。这个加密⽅法是以罗马共和时期凯撒的名字命名的,据称当年凯撒曾⽤此⽅法与其将军们进⾏联系。


但是和所有的利⽤字母表进⾏替换的加密技术⼀样,凯撒密码⾮常容易被破解,⽽且在实际应⽤中也⽆法保证通信安全。


现在给你⼀个已破解的凯撒密码明⽂与密⽂,与⼀个有相同偏移量的未破解凯撒密码密⽂,请你帮忙破解它。


输入格式

输⼊共三⾏:

  • 第⼀⾏包含⼀个字符串,表⽰已破解的凯撒密码明⽂;
  • 第⼆⾏包含⼀个字符串,表⽰已破解的凯撒密码密⽂;
  • 第三⾏包含⼀个字符串,表⽰待破解的凯撒密码密⽂。


输出格式

输出⼀⾏,包含⼀个字符串,表⽰待破解的凯撒密码对应的明⽂。


样例1

输入:

ABCDEFGVWXYZ
DEFGHIJYZABC
WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ

输出:

THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG


样例解释

样例1中,通过已破解的密码得出偏移量为 'D' - 'A' = 3 ,因此,对未破解部分进⾏逆向偏移:密⽂中的 W 对应明⽂中的 T ( 'W' - 3 = 'T' ),密⽂中的 K 对应明⽂中的 H ( 'K' - 3 = 'H' ),以此类推。


数据范围

保证密码长度均不超过1000,所有字符串由⼤写字母组成。


时间限制

1.0 s

内存限制

512.0 MB

💡 查看提示(先自己想一想再看)
1. 核心知识点:字符串遍历、字符ASCII码运算、模运算处理循环偏移;2. 解题思路:先通过已知的明文和密文计算出偏移量(注意偏移量要处理成0-25之间的正数,避免负数模运算出错),再对待破解的密文每个字符进行逆向偏移;3. 常见易错点:偏移量可能为负,需用(d % 26 + 26) % 26将其调整为0-25的正偏移;模运算后记得加'A'转回字符。
⚙ 开始做这道题 0 人做过 · 2 收藏 · 15 浏览

讨论(0)