题目描述
近些日子,某科学家接受到了来自外太空的神秘讯息,在经过了一段时间的研究后,科学家发现讯息是一个由字母和数字组成的字符串str,想要破译,需要通过一定的规则将字符串进行转换。规则如下:
1.确定讯息的长度为32;
2.字符串中第 4 n + 1 ∼ 4 n + 4 4n+1\sim4n+4 4n+1∼4n+4的字母和第 4 n + 1 ∼ 4 n + 4 ( 0 ≤ n ≤ 3 ) 4n+1\sim4n+4(0 \leq n \leq 3) 4n+1∼4n+4(0≤n≤3)的数字为一组,共4组;
3.每组的第1,2,3,4个字符分别往后推每组第1,2,3,4个数字个数 例:如第一个字母为a,第一个数字为3,转换后变为d,‘z’之后是’B’,‘Z’之后是’b’;
4.将每组内部字母的顺序颠倒;
5.将四组字符合并就是最后的讯息。
输入描述
输入一个长度为32的字符串
输出描述
输出转换后的密码
示例
输入
Zzc6Ltw2OD4yR640263W7G8G30HW9C71
输出
RgCgJQwxJfYCDeQG
AC的C++代码
#include <iostream>
#include <string>
using namespace std;
string st,s1,s2;
int main()
{
cin>>st;
for (int i=0;i<st.size();i++)
if (st[i]>='0' && st[i]<='9')
s2+=st[i];
else
s1+=st[i];
for (int i=0;i<s1.size();i++)
for (int k=1;k<=(int)(s2[i]-48);k++)
{
if (s1[i]=='z') s1[i]='B';
else if (s1[i]=='Z') s1[i]='b';
else s1[i]++;
}
for (int i=3;i<s1.size();i+=4)
for (int j=i;j>=i-3;j--)
cout<<s1[j];
}