0
已解决
丁炳瑜
高级光能
高级光能
题目链接: 酷町堂:1791
1791 密码升级战
经验值:1200 时间限制:1000毫秒 内存限制:128MB
题目描述 De**ion
密码战中A国的密码被我们成功破译,所以A国想出另外一条密码规则:
密码仍然为一串字符串,字符串里面每5个字符分为1组;
第一组字符串里面的字母转化为其后的第二个字母,例如:A–C,a–c,Y–A,y–a;
第二组字符串里面的字母转化为其前的第二个字母,例如:C–A,c–a,A–Y,a–y;
后面的字符串的字母全部转化为其后的第一个字母,例如:A–B,a–b,Z–A,z–a。
(除了字母以外的其他字符都不进行变化)
无奈我国再次截取了他们的密码,请将截获的密码翻译成原先的密码。
输入描述 Input De**ion
截取的字符串密码,密码字符个数为(1-50)
输出描述 Output De**ion
破译后的字符串密码
样例输入 Sample Input
NfjTCmianWGoiA
样例输出 Sample Output
LdhRAokcpYFnhZ
附上本人WA0分代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0,d=0;
string a[105],x,y;
int b[10005];
int main(){
getline(cin,x);
for(int i=0;i<=min(4,(int)x.size());i++){
if(x[i]>='A'&&x[i]<='Z'||x[i]>='a'&&x[i]<='z'){
if(x[i]=='B'){
cout<<'Z';
}else if(x[i]=='b'){
cout<<'z';
}else if(x[i]=='A'){
cout<<'Y';
}else if(x[i]=='a'){
cout<<'y';
}else{
cout<<char(x[i]-2);
}
}else{
cout<<x[i];
}
}
for(int i=5;i<=min(9,(int)x.size());i++){
if(x[i]>='A'&&x[i]<='Z'||x[i]>='a'&&x[i]<='z'){
if(x[i]=='Z'){
cout<<'B';
}else if(x[i]=='z'){
cout<<'b';
}else if(x[i]=='Y'){
cout<<'A';
}else if(x[i]=='y'){
cout<<'a';
}else{
cout<<char(x[i]+2);
}
}else{
cout<<x[i];
}
}
for(int i=10;i<=x.size();i++){
if(x[i]>='A'&&x[i]<='Z'||x[i]>='a'&&x[i]<='z'){
if(x[i]=='A'){
cout<<'Z';
}else if(x[i]=='a'){
cout<<'z';
}else{
cout<<char(x[i]-1);
}
}else{
cout<<x[i];
}
}
return 0;
}