10. 消息加密

高老师最近想开发一款聊天软件,但他遇到了一个棘手的问题,他想将聊天消息加密后再发送。 加密方法如下:

创建双字符(假设全部为可见字符,不包含空格)对单字符映射的密码表,比如 “ac”->‘a’,“bc”->‘c’,“ff”->‘z’,“x+”->‘9’。并保证映射均为一一对应,不会出现 “ac”->‘a’,“bc”->‘a’ 或者 “ac”->‘a’,“ac”->‘c’这种情况。按照加密表将消息源码的每个字符加密为双字符,现需要你来实现此消息加密器。

输入

输入包含一组用例
用例第一行包含两个整数 m 和 n,其中 m代表密码表的条数,n 代表需要加密的消息条数, m 和 n 均不大于 100。
第 2 行开始至第 m + 1 行,每行为 ** * 形式的密码表。
第 m + 2 行至第 m+n+1 行,每行为需要加密的聊天消息,聊天消息不长于100 个字符。

输出

输出 n 行加密后的消息。


测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助
测试用例 1以文本方式显示
  1. 26 10↵
  2. ab c↵
  3. bc d↵
  4. cd e↵
  5. de f↵
  6. ef g↵
  7. fg h↵
  8. gh i↵
  9. hi j↵
  10. ij k↵
  11. jk l↵
  12. kl m↵
  13. lm n↵
  14. mn o↵
  15. no p↵
  16. op q↵
  17. pq r↵
  18. qr s↵
  19. rs t↵
  20. st u↵
  21. tu v↵
  22. uv w↵
  23. vw x↵
  24. wx y↵
  25. xy z↵
  26. yz a↵
  27. za b↵
  28. imbit↵
  29. ilovestudy↵
  30. studymakesmehappy↵
  31. goodgoodstudy↵
  32. daydayup↵
  33. nozuonodie↵
  34. whyyoutry↵
  35. youhavetwodownson↵
  36. iloveolddrymother↵
  37. onecarcomeonecargotwocarpengpengonecardied↵
以文本方式显示
  1. ghklzaghrs↵
  2. ghjkmntucdqrrsstbcwx↵
  3. qrrsstbcwxklyzijcdqrklcdfgyznonowx↵
  4. efmnmnbcefmnmnbcqrrsstbcwx↵
  5. bcyzwxbcyzwxstno↵
  6. lmmnxystmnlmmnbcghcd↵
  7. uvfgwxwxmnstrspqwx↵
  8. wxmnstfgyztucdrsuvmnbcmnuvlmqrmnlm↵
  9. ghjkmntucdmnjkbcbcpqwxklmnrsfgcdpq↵
  10. mnlmcdabyzpqabmnklcdmnlmcdabyzpqefmnrsuvmnabyzpqnocdlmefnocdlmefmnlmcdabyzpqbcghcdbc↵
1秒1024KB0



#include<cstdio>
#include<cstring>

int main()
{
	int m = 0, n = 0;
	char str[105][105] = { '\0' }, st[6] = { '\0' };
	int str_num[200][2] = { -1 };
	scanf("%d %d", &m, &n);
	getchar();
	for (int i = 0; i < m; i++)
	{
		scanf("%c%c%c%c%c", &st[0], &st[1], &st[2], &st[3], &st[4]);
		int st1 = st[0];
		int st2 = st[1];
		int st3 = st[3];
		str_num[st3][0] = st1;
		str_num[st3][1] = st2;
	}
	for (int i = 0; i < n; i++)
		scanf("%s", str[i]);
	for (int i = 0; i < n; i++)
	{
		for (int j = 0;; j++)
		{
			if (str[i][j] == '\0')  
				break;
			else
			{
				int s = str[i][j];
				if (str_num[s][0] == -1)
					printf("%c", str[i][j]);
				else
					printf("%c%c",str_num[s][0],str_num[s][1] );
			}
		}
		printf("\n");
	}
	
	return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值