POJ_3749破译密码
Description
据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第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 M
原文字母: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
注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。
Input
最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:
- 起始行:START
- 密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.
- 结束行:END 在最后一个数据集之后,是另一行:ENDOFINPUT
Output
每个数据集对应一行,是凯撒的原始消息
1 #include <iostream>
2 #include <string>
3 #include <stdio.h>
4
5 using namespace std;
6
7 int main()
8 {
9 string miwen;
10 string tmp;
11 int i;
12 char ch;
13 while(1)
14 {
15 getline(cin,tmp);
16 if(tmp=="START")
17 {
18 getline(cin,miwen);
19 }
20 else if(tmp=="END")
21 {
22 i=0;
23 while((miwen[i]!='\0')&&(i<=199))
24 {
25 if(miwen[i]>='F'&&miwen[i]<='Z')
26 {
27 printf("%c",miwen[i]-5);
28 }
29 else if(miwen[i]>='A'&&miwen[i]<='E')
30 {
31 printf("%c",miwen[i]+'V'-'A');
32 }
33 else
34 {
35 printf("%c",miwen[i]);
36 }
37 i++;
38 }
39 printf("\n");
40 }
41 else if(tmp=="ENDOFINPUT")
42 {
43 break;
44 }
45 }
46 return 1;
47 }