0
已解决
李宜和
高级启示者
高级启示者
5546 解密(key)
经验值:400 时间限制:1000毫秒
庐阳区2020年**学竞赛试题
不许抄袭,一旦发现,直接清空经验!
题目描述 Desc**ption
为了防止**传递过程中被截获,往往需要对传输的文本用一定的方式加密, 简单的加密算法虽然不足以完全避免**被破译,但仍然能防止**被轻易的识别。
有一种对26个字母的加密方式是“对称加密”。所谓“对称加密”就是26个英文字母,以中间为对称轴、左右对称。比如,A被加密为Z, Y被加密为B,小写字母也是如此,如c被加密为x,w被加密为d.
现在给定个加密后的字母,请输出加密前是哪一个字母。
输入描述 Input Desc**ption
一个英文字母,为A-Z或a-z中的一个。表示加密后的字母。
输出描述 Output Desc**ption
一个字母,为加密前的字母。
样例输入 Sample Input
Z
样例输出 Sample Output
A
求核心
0
已采纳
王文博
缔造者之神
缔造者之神
思路:
F1:
我们可以在这些对称的字符中找到一些奇妙的规律:两个对称的大写字母相加总是得到'A'+'Z',小写字母总是得到'a'+'z'。
所以,运用这个规律,可以得到:
if(a>='A'&&a<='Z') cout<<char('A'+'Z'-a);
else cout<<char('a'+'z'-a);
F2:
一一判断:
if(a=='A') cout<<'Z';
else if(a=='B') cout<<'Y';
考试的时候想不出来F1,可以用F2来得到全部分。
望采纳!
0
0