旨在为小朋友们提供全面的学习材料,共同为等级考试做好准备。
添加小助手微信,回复【GESP三级2026.03_凯撒密码】,获取本题源代码。
【提交】
https://www.luogu.com.cn/problem/B4500
【问题描述】
凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 的时候,所有的字母 将被替换成 , 变成 , 变成 ,以此类推, 变成 。这个加密方法是以罗马共和时期凯撒的名字命名的,据称当年凯撒曾用此方法与其将军们进行联系。
但是和所有的利用字母表进行替换的加密技术一样,凯撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。
现在给你一个已破解的凯撒密码明文与密文,与一个有相同偏移量的未破解凯撒密码密文,请你帮忙破解它。
【输入描述】
输入共三行:
第一行包含一个字符串,表示已破解的凯撒密码明文;
第二行包含一个字符串,表示已破解的凯撒密码密文;
第三行包含一个字符串,表示待破解的凯撒密码密文。
【输出描述】
输出一行,包含一个字符串,表示待破解的凯撒密码对应的明文。
【样例输入1】
ABCDEFGVWXYZDEFGHIJYZABCWKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ【样例输出1】
THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG【样例解释】
样例 1 中,通过已破解的密码得出偏移量为 'D' - 'A' = 3,故而未破解的密码中 W 对应的字母为 'W' - 3 = 'T',K 对应的字母为 'K' - 3 = 'H',以此类推。
【数据范围】
保证密码长度均不超过 ,所有字符串由大写字母组成。
参考程序:
"""[GESP202603 三级] 凯撒密码https://www.luogu.com.cn/problem/B4500"""str1 = input()str2 = input()str3 = input()d = (ord(str2[0]) - ord(str1[0]) + 26) % 26s = ""for i in str3: pos = ord(i) - ord('A') - dif pos < 0: pos += 26 s += chr(ord('A') + pos)print(s)青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
