• 水 凯撒密码 南邮NOJ2062


    凯撒密码

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 105            测试通过 : 51 

    题目描述

        据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。

        而你要获得消息原文,也就是要将这个过程反过来。

        对应表如下: 

                        密码字母:A   B  C   D  E   F  G   H   I   J   K   L   M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
                        原文字母:V  W  X   Y   Z  A   B   C  D  E  F   G   H   I   J   K   L  M  N  O  P  Q  R  S  T  U 

        那么问题来了,现在yuman手上有一篇密文,你能帮他翻译成明文么?

        



    输入

    先输入一个正整数T,表示样例数(1<=T<=1000)

    对于每一个样例,先输入一个正整数n,代表字符串的长度(1<=n<=1000)

    然后再输入一个长度为n的字符串,保证字符串中只含有大写字母;


    输出

    输出密文翻译出的明文;

    样例输入

    3
    1
    N
    4
    QTAJ
    3
    DTZ

    样例输出

    I
    LOVE
    YOU

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<set>
    #include<map>
    #include<vector>
    #include<stack>
    #include<cmath>
    #include<string>
    #include<algorithm>
    using namespace std;
    const int N=1000;
    int main()
    {
        int T;
        cin>>T;
        while(T--!=0)
        {
            int n;
            cin>>n;
            char a[N];
            cin>>a;
            for(int i=0;i<n;i++)
            {
                if(a[i]=='A')
                    cout<<'V';
                if(a[i]=='B')
                    cout<<'W';
                if(a[i]=='C')
                    cout<<'X';
                if(a[i]=='D')
                    cout<<'Y';
                if(a[i]=='E')
                    cout<<'Z';
                if(a[i]=='F')
                    cout<<'A';
                if(a[i]=='G')
                    cout<<'B';
                     if(a[i]=='H')
                    cout<<'C';
                     if(a[i]=='I')
                    cout<<'D';
                     if(a[i]=='J')
                    cout<<'E';
                     if(a[i]=='K')
                    cout<<'F';
                     if(a[i]=='L')
                    cout<<'G';
                     if(a[i]=='M')
                    cout<<'H';
                     if(a[i]=='N')
                    cout<<'I';
                     if(a[i]=='O')
                    cout<<'J';
                     if(a[i]=='P')
                    cout<<'K';
                     if(a[i]=='Q')
                    cout<<'L';
                     if(a[i]=='R')
                    cout<<'M';
                     if(a[i]=='S')
                    cout<<'N';
                     if(a[i]=='T')
                    cout<<'O';
                     if(a[i]=='U')
                    cout<<'P';
                     if(a[i]=='V')
                    cout<<'Q';
                     if(a[i]=='W')
                    cout<<'R';
                     if(a[i]=='X')
                    cout<<'S';
                     if(a[i]=='Y')
                    cout<<'T';
                     if(a[i]=='Z')
                    cout<<'U';
            }
            cout<<endl;
        }
        return 0;
    }
    

    很常规的做法~类似的题我一般都采用这种枚举的方法~

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    centos6.8安装JDK1.8
    尚硅谷 ActiveMQ
    Spring 注解版-事务实现
    nginx实现动静分离
    C/C++ 位域
    大小端模式
    C++find函数
    C++ transform
    C++ string的大小写转换
    C++ pair用法
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965663.html
Copyright © 2020-2023  润新知