EOJ 3000 ROT13加密和解密
Posted thejacoblu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EOJ 3000 ROT13加密和解密相关的知识,希望对你有一定的参考价值。
应用 ROT13 到一段文字上仅仅只需要检查字母顺序并取代它在 13 位之后的对应字母,有需要超过时则重新绕回 26 英文字母开头即可。A 换成 N、B 换成 O、依此类推到 M 换成 Z,然后串行反转:N 换成 A、O 换成 B、最后 Z 换成 M (如图所示)。只有这些出现在英文字母里的字符受影响;数字、符号、空白字符以及所有其他字符都不变。替换后的字母大小写保持不变。
Input
第 1 行:一个整数 T (1≤T≤10) 为问题数。
接下来共 T 行。每行为长度不超过 1000 个字符的一段文字。内含大小写字母、空格、数字和各种符号等。
Output
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。
然后对应每个问题在一行中输出经过 ROT13 加密后的一段文字。
定义一个const数组,便于直接+13回转,省去判断是否需要绕回
const string rot="ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ";
核心部分
1 string a; 2 getline(cin,a); 3 for(int i=0;i<a.size();i++)
4 if(isalpha(a[i])) 5 a[i]=a[i]>=\'a\'?tolower(rot[a[i]-\'a\'+13]):rot[a[i]-\'A\'+13];
6 printf("case #%d:\\n",m); 7 cout << a << endl;
注意原输入的大小写不可改变。
以上是关于EOJ 3000 ROT13加密和解密的主要内容,如果未能解决你的问题,请参考以下文章
php 解密eval(gzinflate(str_rot13(base64_decode