如果需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第 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;
}