问题标题: 酷町堂:各位大神求解1791 密码升级战!!

0
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

题目网址:1791 密码升级战

我的代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
using namespace std;
int main ()
{
    string s;
    int l;
    getline (cin,s);
    l=s.size();
    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
已采纳
陆麟瑞
陆麟瑞
资深天翼
资深天翼

l=s.size();

改为

l=s.size()-1;!!!

0
黄昊轩
黄昊轩
新手守护
新手守护
头文件 #include <algorithm>
排序+模拟
 sort(a+1,a+10+1);
    浮点型 sum=0;
    循环(int i=2; i<=10-1; i++)
    sum+=a[i];
    输出,用printf("%.2f",(int)(sum/8.0*100+0.5)/100.0);
a数组是double型

 

0
陆麟瑞
陆麟瑞
资深天翼
资深天翼

可以参考如下代码。

循环(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];
    }
   循环(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];
    }
    循环(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
我要回答