水 凯撒密码 南邮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;
}

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

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

原文地址:https://www.cnblogs.com/Tobyuyu/p/4965663.html