All Posts

ROT13加密和解密

问题 ROT13(回转13位)是一种简易的替换式密码算法。它是一种在英文网络论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13 也是过去在古罗马开发的凯撒密码的一种变体。ROT13是它自身的逆反,即:要还原成原文只要使用同一算法即可得,故同样的操作可用于加密与解密。该算法并没有提供真正密码学上的保全,故它不应该被用于需要保全的用途上。它常常被当作弱加密示例的典型。 应用ROT13到一段文字上仅仅只需要检查字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后串行反转:N换成A、O换成B、最后Z换成M(如图所示)。只有这些出现在英文字母里的字符受影响;数字、符号、空白字符以及所有其他字符都不变。替换后的字母大小写保持不变。 例如,下面的英文笑话,精华句被ROT13所隐匿: How can you tell an extrovert from an introvert at NSA? Va gur ryringbef, gur rkgebireg ybbxf ng gur BGURE thl’f fubrf. 通过ROT13转换,该笑话的解答揭露如下: Ubj pna lbh gryy na rkgebireg sebz na vagebireg ng AFN? In the elevators, the extrovert looks at the OTHER guy’s shoes. 第二次使用ROT13将恢复为原文。 Input 第1行:一个整数T(1≤T≤10)为问题数。 接下来共T行。每行为长度不超过1000个字符的一段文字。内含大小写字母、空格、数字和各种符号等。 Output 对于每个问题,输出一行问题的编号(0开始编号,格式:case #0: 等)。 然后对应每个问题在一行中输出经过ROT13加密后的一段文字。 Sample Input 3 How can you tell an extrovert from an

一个简单的输入输出算法题

有一天同学给了一个非常简单的算题,我居然写了半天,这次我要把它记录下来,以此明志,以后应该要更加注重这方面的锻炼。 题目 ime Limit: 1000 MS Memory Limit: 32768 K 给定两个同样长度的整数数组a[n]和b[n],按照公式c[n]=a[n] * 2 - b[n]生成数组c[n],并输出。 输入格式: 共2行数据,每一行是以空格为分隔符的数组,第一个数是一个正整数n,表示数组元素的个数(2<=n<=100), 接下来是n个正整数表示数组元素,每个整数不超过100。 输出格式: 共1行数据,第一行是以空格为分隔符的数组,第一个数是一个正整数n,表示数组元素的个数(2<=n<=100),接下来是n个正整数表示数组元素,每个整数不超过100。 样例: 输入: 10 18 38 83 93 53 36 39 58 8 93 10 55 79 20 71 60 66 79 55 78 66 输出 10 -19 -3 146 115 46 6 -1 61 -62 120 代码 #include "stdafx.h" #include<iostream> using namespace std; int main() { int a[100],b[100],c[100]; int n,n_; cin >> n; int m,m_; for (int i = 0; i < n;++ i) { cin >> m; a[i] = m; } cin >>n_; for (int i = 0;i < n; ++ i) { cin >> m_; b[i] = m_; } for (int i = 0;i <= n;i++) { if (i == 0) cout << n << " "; else cout << a[i-1]*2 - b[i-1] << " "; } return 0; } 这个程序很简单,只是数组的输入输出就好了,以后应该还是要找点OJ题目练习一下。