问题标题: 酷町堂:5542 解密(passport)

1
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

5542   解密(passport) 经验值:800

不许抄袭,一旦发现,直接清空经验!

题目描述 Description

萱萱最近在学习计算机密码学,密码学是一门古老而又年轻的学问,计算机科学的兴起给密码学注入了新的活力。在网络、通信技术高度发达的今天,计算机安全和保密问题显得越来越重要。萱萱在学习过程中遇到了这样一个任务:解密一份被加密过的文件。

经过研究,萱萱发现了加密文件有如下加密规律(括号中是一个“原文->密文”的例子)
(1)原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
(2)逆序存储(abcd -> dcba )

(3)字母大小写反转(abXY -> ABxy)

输入描述 Input Description

一个加密的字符串。(长度大于1且小于50且只包含大小写字母)

输出描述 Output Description

输出解密后的字符串。

样例输入 Sample Input

Helloworld

样例输出 Sample Output

GOURZROOHk

 

        #include <iostream>
        #include <cstdio>
        #include <string>
        using namespace std;
        string s;
        int main() {
            cin >> s;
            for (int i = 0; i < s.size(); i ++) {
                if (s[i] == 'c') {
                    s[i] = 'z';
                }
                else if (s[i] == 'b') {
                    s[i] = 'y';
                }
                else if (s[i] == 'a') {
                    s[i] = 'x';
                }
                else {
                    s[i] += 3;
                }
            }

            string s1 = "";
            int j = 0;
            for (int i = s.size() - 1; i >= 0; i --) {
                s1[j ++] = s[i];
            }
            for (int i = 0; i < s.size(); i ++) {
                s[i] = s1[i];
            }


            for (int i = 0; i < s.size(); i ++) {
                if (s[i] >= 'a' && s[i] <= 'z') {
                    s[i] -= 32;
                }
                else if (s[i] >= 'A' && s[i] <= 'Z') {
                    s[i] += 32;
                }
            }
            cout << s;
            return 0;
        }

本人20分代码,求大佬找错


0
我要回答