题解:洛谷 B4500 [GESP202603 三级] 凯撒密码

发布时间:2026/7/2 12:03:19
题解:洛谷 B4500 [GESP202603 三级] 凯撒密码 本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷B4500 [GESP202603 三级] 凯撒密码 - 洛谷【题目描述】凯撒密码是一种替换加密技术明文中的所有字母都在字母表上向后或向前按照一个固定数目进行偏移后被替换成密文。例如当偏移量是3 33的时候所有的字母A AA将被替换成D DDB BB被替换成E EEC CC被替换成F FF以此类推W WW被替换成Z ZZX XX被替换成A AAY YY被替换成B BBZ ZZ被替换成C CC。这个加密方法是以罗马共和时期凯撒的名字命名的据称当年凯撒曾用此方法与其将军们进行联系。但是和所有的利用字母表进行替换的加密技术一样凯撒密码非常容易被破解而且在实际应用中也无法保证通信安全。现在给你一个已破解的凯撒密码明文与密文与一个有相同偏移量的未破解凯撒密码密文请你帮忙破解它。【输入】输入共三行第一行包含一个字符串表示已破解的凯撒密码明文第二行包含一个字符串表示已破解的凯撒密码密文第三行包含一个字符串表示待破解的凯撒密码密文。【输出】输出一行包含一个字符串表示待破解的凯撒密码对应的明文。【输入样例】ABCDEFGVWXYZ DEFGHIJYZABC WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ【输出样例】THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG【算法标签】#入门 #字符串入门【代码详解】#includebits/stdc.husingnamespacestd;string a,b,c;// 定义三个字符串a(明文1), b(密文1), c(要解密的字符串)intmain()// 主函数入口{// 输入a是已知明文b是已知密文c是要解密的密文cinabc;// 计算加密位移量b[0]和a[0]的ASCII码差值intdeltab[0]-a[0];// 遍历要解密的字符串c的每个字符for(inti0;ic.size();i){intnumc[i]-A;// 将字符转换为0-25的数字// 进行解密计算减去位移量然后取模26确保在0-25范围内num(num-delta26)%26;c[i]Anum;// 将数字转换回字符}// 输出解密后的字符串coutcendl;return0;// 程序正常结束}【运行结果】ABCDEFGVWXYZ DEFGHIJYZABC WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG