题解
X星球信号加密
1 条题解
-
0
解题思路
加密规则:第一个信号加密时向后(字母表顺序后)移动 5 个位置;第二个信号加密时向前移动 4 个位置。
那解密就要反过来:
- 第一个信号:加密向后移 5 位,解密就向前移 5 位,也就是把加密后的字符减 5。比如加密后是 F,F-5 = A。
- 第二个信号:加密向前移 4 位,解密就向后移 4 位,也就是把加密后的字符加 4。比如加密后是 f,f+4 = j。
在 C++ 里,字符可以直接做加减运算,比如 'F' - 5 得到 'A'。题目保证加密后的字符在 F-V 或 f-v 范围内,所以直接减 5、加 4 不会越界。
参考代码
// 用途:解密 X 星球的两个加密字母信号 #include <iostream> using namespace std; int main() { char x, y; cin >> x >> y; // 第一个信号加密时向后移 5 位,所以解密要向前移 5 位 x -= 5; // 第二个信号加密时向前移 4 位,所以解密要向后移 4 位 y += 4; cout << x << " " << y << endl; return 0; }复杂度分析
只对两个字符各做了一次加减,时间复杂度是 O(1)。
- 1