时间限制: 1000 MS 内存限制: 65536 K
提交数: 691 (0 users) 通过数: 299 (285 users)
问题描述
小明喜欢看谍战片,特别是喜欢看破译电报的桥段。现在他学了C语言,他想借助电脑,将自己的一些文档进行加密。不过有一次在整理硬盘的时候,他不小心把源文档给删掉了。只留下了加密后的文档。当然之间看加密的文档是看不出他写的是什么,不过小明还记得自己是怎么加密的,规律如下:
即第i个字母变成第(26-i+1)个字母。简单归纳该方法为对称转换加密。
按照上述规律转换,非字母字符不变。例如“China!”转换为“Xsrmz!”
A→Z, a→z
B→Y, b→y
C→X, c→x
…
Z→A,z→a
输入格式
输入一行加密后的字符串
输出格式
输出破译的字符串,注意请不要遗漏任何字符和输出多余的字符
样例输入
R droo erhrg Xsrmz mvcg dvvp.
样例输出
I will visit China next week.
来源
xmu
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100005
int main()
{
char cipher[MAX_SIZE] = { 0 };
char decryption[MAX_SIZE] = { 0 };
int i;
fgets(cipher, MAX_SIZE - 1, stdin);
for (i = 0; cipher[i]; ++i)
{
if ('A' <= cipher[i] && cipher[i] <= 'Z')
decryption[i] = (char)(25 - (cipher[i] - 'A') + 'A');
else if ('a' <= cipher[i] && cipher[i] <= 'z')
decryption[i] = (char)(25 - (cipher[i] - 'a') + 'a');
else
decryption[i] = cipher[i];
}
fputs(decryption, stdout);
return 0;
}