2248. Day1 C - 基本变量类型练习 II - 凯撒加密算法

如果需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第 4 个字母置换第一个字母,即以 D 代 A,以此类推 —— 苏维托尼乌斯,罗马十二帝王传

凯撒密码是世界上最早出现的加密算法了,它将字母向后推三个字母,得到加密符号,如 'A' + 3 = 'D', 'W' + 3 = 'Z', 'Y' + 3 = 'B'

虽然这份加密算法在当下显得是如此儿戏,但是有理由相信它足够安全。因为凯撒大部分敌人都是目不识丁,而其余人则可能将这些消息当作是某个未知的外语

关于凯撒加密的更多信息,可以查看 wiki 的相关页面

本题我们来实现这个加密算法

正如上一题中所提到的,char 类型占用 1 个字节,数据范围是 -128 ~ 127,也就是说,当 int 足够小时,它可以与 int 相互转换,请大家自行 AI 学习相关内容,比如你可以直接把本题题面复制给 AI

引用 wiki 的一段信息:

凯撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A = 0,B = 1,...,Z = 25。此时偏移量为 n 的加密方法即为: E_n(x) = (x + n) \bmod 26

那么,你能解决这个问题了吗?

输入

输入仅一行,一个大写字母 Char ('A' \le Char \le 'Z') 和一个偏移量 n (1 \le n \le 25),由空格分隔

输出

输出仅一行,一个字符,表示加密后的字母

样例

标准输入 复制文本
A 5
标准输出 复制文本
F
标准输入 复制文本
Y 2
标准输出 复制文本
A

提示

如果需要更多提示,可以试着运行以下代码,观察运行结果

#include <iostream> using namespace std; int main() { char c = 'F'; int a = c; cout << c << " " << (int)c << endl; cout << a << " " << (int)'A' << endl; cout << c - 65 << " " << a - 'A' << endl; return 0; }

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 207
通过 111