top1编程
← 返回题目
题解

X星球信号加密

1 条题解

  • 0
    @ 2026-8-4 1:18:03

    解题思路

    加密规则:第一个信号加密时向后(字母表顺序后)移动 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