版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
做人的最大乐趣,就是在混乱当中,找到属于自己的系统。
题目描述
最难的问题 | 时间限制:1秒 | 内存限制:32768K
NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。
消息加密的办法是
对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不变,并且消息原文的所有字母都是大写的。密码中的字母与原文中的字母对应关系如下。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
输入描述:
输入包括多组数据,每组数据一行,为收到的密文。
密文仅有空格和大写字母组成。
输出描述
对应每一组数据,输出解密后的明文。
示例
输入
HELLO WORLD
SNHJ
输出
CZGGJ RJMGY
NICE
题目解析
题目很容易理解,原文与密码错位5个英文字符
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N
O P Q R S T U
解题思路
密码 > ‘E’
则:原文 = 密码 - 5
否则: 原文 = 密码 + 21
示例代码
#include <stdio.h>
int main() {
char c;
while ((c = getchar()) != EOF){
if ('A' <= c && 'Z' >= c) {
c = (c > 'E') ? (c - 5) : (c + 21);
}
putchar(c);
}
return 0;
}