1
已解决
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分代码,求大佬找错
