北大 acm 2141 Message Decowding 解题报告

Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7150 Accepted: 3865

Description

The cows are thrilled because they’ve just learned about encrypting messages. They think they will be able to use secret messages to plot meetings with cows on other farms.

Cows are not known for their intelligence. Their encryption method is nothing like DES or BlowFish or any of those really good secret coding methods. No, they are using a simple substitution cipher.

The cows have a decryption key and a secret message. Help them decode it. The key looks like this:
yrwhsoujgcxqbativndfezmlpk
Which means that an ‘a’ in the secret message really means ‘y’; a ‘b’ in the secret message really means ‘r’; a ‘c’ decrypts to ‘w’; and so on. Blanks are not encrypted; they are simply kept in place.

Input text is in upper or lower case, both decrypt using the same decryption key, keeping the appropriate case, of course.

Input
  • Line 1: 26 lower case characters representing the decryption key

  • Line 2: As many as 80 characters that are the message to be decoded

Output
  • Line 1: A single line that is the decoded message. It should have the same length as the second line of input.
Sample Input

eydbkmiqugjxlvtzpnwohracsfKifq oua zarxa suar bti yaagrj fa xtfgrj

Sample Output

Jump the fence when you seeing me coming

题意:第一个输入为26位自定义的字母表如题a翻译成e,b翻译成y,c翻译成d,如此类推,第二个输入的为密文,要用第一次输入的字母表翻译成译文

代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
using namespace std;
int main()
{
char zimu[27],message[1000];
int i;
while(gets(zimu)&&gets(message))
{
for(i=0;i<strlen(message);i++)
if(message[i]==' ')
cout<<" "; //如果是空格输出空格
else
{
if(message[i]<97)
printf("%c",zimu[message[i]-'a'+32]-32); //大写字母转换输出,大写ascll码加32就变成小写字母,再换回大写减去32,要用print输出
else
cout<<zimu[message[i]-'a'];
}
cout<<endl;
}
return 0;
}