问题标题: 酷町堂:5546 解密

0
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
张恩泽
张恩泽
高级天翼
高级天翼

**学变成了**学

【doge】

我要回答