凯撒密码
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 105 测试通过 : 51
很常规的做法~类似的题我一般都采用这种枚举的方法~
总提交 : 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; }
很常规的做法~类似的题我一般都采用这种枚举的方法~
版权声明:本文为博主原创文章,未经博主允许不得转载。