小王子

聆听小王子,守望成长,静待花开

小王

题目描述

Julius Caesar 曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。

密文

ABCDEFGHIJKLMNOPQRSTUVWXYZ

明文

VWXYZABCDEFGHIJKLMNOPQRSTU 你的任务是对给定的密文进行解密得到明文。 你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进 行解码。

输入

一行,给出密文,密文不为空,而且其中的字符数不超过 200。

输出

输出一行,即密文对应的明文。

样例输入

NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX

样例输出

IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    for(int i = 0;i < s.size();i++) { 
        if(s[i] >= 'A' && s[i] <= 'Z')
            s[i] = (s[i] + 21 - 'A') % 26 + 'A';
    }
    cout << s;
    return 0;
}
3年前 (04月09日)
小王

描述

医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将ASPIRIN、aspirin整理成Aspirin。

输入

第一行一个数字n,表示有n个药品名要整理,n不超过100。
接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母、数字和-组成。

输出

n行,每行一个单词,对应输入的药品名的规范写法。

样例输入

4
AspiRin
cisapride
2-PENICILLIN
Cefradine-6

样例输出

Aspirin
Cisapride
2-penicillin
Cefradine-6

题解

cpp

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    int n = 0,i = 0,j = 0,b = 0;
    char a[999];
    cin >> n;
    for(i = 0;i < n;i++) 
    { 
        cin >> a;
        b = strlen(a);
        for(j = 0;j < b;j++) 
        { 
            if(j == 0 && a[j] >= 'a' && a[j] <= 'z') 
                a[j] -= 32; 
            if(j > 0 && a[j] >= 'A' && a[j] <= 'Z')
                a[j] += 32;
        }
        cout << a << endl;
    }
    return 0;
}
3年前 (02月18日)
cfanlost
  • cfanlost : 医院开药的系统好像是拼音首字母就可以联想出来.
    • 老王 : 回复 cfanlost: 嗯,现在医院的系统都是定制的!
    小王

    描述

    把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。

    输入

    输入一行:待互换的字符串。

    输出

    输出一行:完成互换的字符串(字符串长度小于80)。

    样例输入

    If so, you already have a Google Account. You can sign in on the right.

    样例输出

    iF SO, YOU ALREADY HAVE A gOOGLE aCCOUNT. yOU CAN SIGN IN ON THE RIGHT.

    题解

    cpp
    
    #include <iostream>
    using namespace std;
    int main()
    {
        char a[9999];
        int i = 0;
        cin.getline(a,80);
        for(int i = 0;a[i];i++)
        {
            if(a[i] >= 'a' && a[i] <= 'z') 
                a[i] -= 32; 
            else if(a[i] >= 'A' && a[i] <= 'Z')
                a[i] += 32;
        }
        for(int i = 0;a[i];i++)
            cout<<a[i];
        cout<<endl;
        return 0;
    }
    
    3年前 (02月17日)
    小王

    描述

    给定一个字符串,将其中所有的小写字母转换成大写字母。

    输入

    输入一行,包含一个字符串(长度不超过100,可能包含空格)。

    输出

    输出转换后的字符串。

    样例输入

    helloworld123Ha

    样例输出

    HELLOWORLD123HA

    题解

    cpp
    
    #include <iostream>
    using namespace std;
    int main()
    {
        char a[9999];
        int i = 0;
        cin.getline(a,80);
        for(int i = 0;a[i];i++)
        {
            if(a[i] >= 'a'&&a[i] <= 'z')
                a[i] -= 32;
        }
        cout << a;
        return 0;
    }
    
    3年前 (02月16日)
    小王

    描述

    小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
    在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
    经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
    1. 原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
    2. 逆序存储(abcd -> dcba )
    3. 大小写反转(abXY -> ABxy)

    输入

    一个加密的字符串。(长度小于50且只包含大小写字母)

    输出

    输出解密后的字符串。

    样例输入

    GSOOWFASOq

    样例输出

    Trvdizrrvj

    题解

    cpp
    
    #include <cstdio>
    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int main()
    {
        string a;
        char b;
        int c = 0;
        getline(cin,a);
        c = a.size();
        for(int i = 0;i < c;i++) 
        { 
            b = a[i]; 
            if(a[i] >= 'a' && a[i] <= 'z') 
            { 
                b += 3; 
                if(b > 'z')
                    b -= 26;
                b -= 32;
            }
            if(a[i] >= 'A' && a[i] <= 'Z') 
            { 
                b += 3; 
                if(b > 'Z')
                    b -= 26;
                b += 32;
            }
            a[i] = b;
        }
        for(int i = c - 1;i >= 0;i--)
            cout << a[i];
        return 0;
    }
    
    3年前 (02月15日)
    小王

    描述

    在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。

    输入

    输入一行,包含一个字符串,长度小于80个字符。

    输出

    输出每行字符串的加密字符串。

    样例输入

    Hello! How are you!

    样例输出

    Ifmmp! Ipx bsf zpv!

    题解

    cpp
    
    #include <cstring>
    #include <iostream>
    using namespace std;
    int main()
    {
        char b[999] = "";
        cin.getline(b,80);
        for(int i = 0;i != strlen(b);i++)
        {
            if(b[i] >= 'a' && b[i] <= 'y' || b[i] >= 'A' && b[i] <= 'Y')
                b[i]++;
            else if (b[i] == 'z')
                b[i] = 'a';
            else if (b[i] == 'Z')
                b[i] = 'A';
        }
        cout << b << endl;
        return 0;
    }
    
    3年前 (02月15日)
    小王

    描述

    脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。

    输入

    一个字符串,表示一条碱基链。这个字符串只含有大写字母A、T、G、C,分别表示腺瞟呤、胸腺嘧啶、鸟嘌呤和胞嘧啶。字符串长度不超过255。

    输出

    一个只含有大写字母A、T、G、C的字符串,为与输入的碱基链互补的碱基链。

    样例输入

    ATATGGATGGTGTTTGGCTCTG

    样例输出

    TATACCTACCACAAACCGAGAC

    题解

    cpp
    
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    using namespace std;
    int main()
    {
        char a[9999];
        int b = 0,c = 0;
        cin >> a;
        b = strlen(a);
        for (int i = 0;i < b;i++)
        {
            if (a[i] == 'T')
                a[i] = 'A';
            else if (a[i] == 'A')
                a[i] = 'T';
            else if (a[i] == 'G')
                a[i] = 'C';
            else if (a[i] == 'C')
                a[i] = 'G';
        }
        cout << a;
        return 0;
    }
    
    3年前 (02月14日)
    小王

    描述

    编写程序,求给定字符串s的亲朋字符串s1。

    亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最 后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的ASCII值。

    输入

    输入一行,一个长度大于等于2,小于等于100的字符串。字符串中每个字符的ASCII值不大于63。

    输出

    输出一行,为变换后的亲朋字符串。输入保证变换后的字符串只有一行。

    样例输入

    1234

    样例输出

    cege

    题解

    cpp
    
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    using namespace std;
    int main()
    {
        char a[9999];
        int b = 0,c = 0;
        cin.getline(a,200);
        c = a[0];
        b = strlen(a);
        for (int i = 0,j = 1;i < b;i++,j++)
            a[i] = a[i] + a[j];
        a[b - 1] += c;
        cout << a;
        return 0;
    }
    
    3年前 (02月13日)