问题标题: 酷町堂 1791 密码升级战

1
0
已解决
邵逸儒
邵逸儒
中级天翼
中级天翼

1791   密码升级战

题目描述 Description

密码战中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 Description

截取的字符串密码,密码字符个数为(1-50)

输出描述 Output Description

破译后的字符串密码

样例输入 Sample Input

 

cdeaBwxAzyBc23a

样例输出 Sample Output

 

abcyZyzCbaAb23z

求大神指教!!!谢谢啦!!!

http://judge.codingtang.com/problem/1791/

邵逸儒在2018-01-27 12:57:10追加了内容


0
已采纳
陆麟瑞
陆麟瑞
资深天翼
资深天翼

可以参考如下代码。

for(int i=0; i<=min(4,l); i++)//第一部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='B') cout<<'Z';
            else if(s[i]=='b') cout<<'z';
            else if(s[i]=='a') cout<<'y';
            else if(s[i]=='A') cout<<'Y';
            else cout<<char(s[i]-2);
        }
        else cout<<s[i];
    }
    for(int i=5; i<=min(9,l); i++)//第二部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='Z') cout<<'B';
            else if(s[i]=='z') cout<<'b';
            else if(s[i]=='y') cout<<'a';
            else if(s[i]=='Y') cout<<'A';
            else cout<<char(s[i]+2);
        }
        else cout<<s[i];
    }
    for(int i=10; i<=l; i++)//第三部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='A') cout<<'Z';
            else if(s[i]=='a') cout<<'z';
            else cout<<char(s[i]-1);
        }
        else cout<<s[i];
    }

模拟一遍就行了。

0
0
0
0
我要回答