2217 - 解密信息
Time Limit : 1 秒
Memory Limit : 32 MB
一天,小明收到了小红给他发来的一封邮件,但是大眼看上去是一堆乱码,不过在邮件的最后小明看到了小红写的邮件解密的方法,举例如下:
给出一串解密key,例如yrwhsoujgcxqbativndfezmlpk。
这串解密key的意思就是邮件中的‘a’实际上应该是‘y’,邮件中的‘b’实际上应该是‘r’,邮件中的‘c’实际上应该是‘w’,以此类推。邮件中的空格不需要解密,按原样显示即可。
Input
输入包含多组测试数据。
每组输入的第一行为一个包含26个小写字母的字符串,表示解密key。
每组输入的第二行为一个长度不超过80的字符串,表示待解密的邮件内容,其中包含大小写字母、空格。
Output
对于每组输入,输出解密后的邮件内容,每组输出占一行。
Examples
Input Format
eydbkmiqugjxlvtzpnwohracsf Kifq oua zarxa suar bti yaagrj fa xtfgrj
Output Format
Jump the fence when you seeing me coming
Solution C
#include<stdio.h> int main() { char b[30]; char c[85]; int i; int d; while (scanf("%s",b)!=EOF) { getchar(); gets(c); for (i=0; c[i]!='\0'; i++) { if(c[i]!=' ') { d = c[i]; if (d>=97) printf("%c",b[d-97]); else printf("%c",b[d-65]-32); } else printf("%c",c[i]); } printf("\n"); } return 0; }
Solution C++
#include <stdio.h> int main() { int i; char a[27], b[81]; while (gets(a)) { gets(b); for (i = 0; b[i] != '\0'; i++) if (b[i] >= 'a' && b[i] <= 'z') b[i] = a[b[i] - 'a']; else if (b[i] >= 'A' && b[i] <= 'Z') b[i] = a[b[i] - 'A'] - 32; puts(b); } return 0; }
Solution Java
import java.util.*; public class Main { public static void main(String[] args){ Scanner cin=new Scanner(System.in); String s1,s2,str; while(cin.hasNext()){ str=""; s1=cin.nextLine(); s2=cin.nextLine(); for(int i=0;i<s2.length();i++){ if(s2.charAt(i)==' ') str+=" "; else{ if(s2.charAt(i)>='a'&&s2.charAt(i)<='z') str+=s1.charAt(s2.charAt(i)-97); else if(s2.charAt(i)>='A'&&s2.charAt(i)<='Z') str+=(s1.charAt(s2.charAt(i)-65)+"").toUpperCase(); } } System.out.println(str); } } }
Solution Python
from sys import stdin j="abcdefghijklmnopqrstuvwxyz" def DICT(i):return dict(zip(j.upper(),i.upper())+zip(j,i)+[(" "," ")]) i=0 for a in stdin: if i%2==0: k=DICT(list(a.split('\n'))[0]) else : print "".join(k[c] for c in a.split('\n')[0]) i+=1