dbouo 2023-04-08 12:09 采纳率: 81.5%
浏览 83
已结题

头歌educoder三分密码c++题

题目描述
在 TrifidCipher 中,编码是通过使用一个表格将每个明文字母分解为一个三元组,混合三元组的组成部分,然后逆向应用表格,将这些混合的三元组转换为密文字母。

创建一个带有三个参数的函数;一个 27 个字母的键、一个中断点和一个包含要编码的消息的字符串。

加密规则有一些变化。密码规则的一个版本概述如下:

key="EPSDUCVWYM+ZLKXNBTFGORIJHAQ"
period=5
message="DEFENDTHEEASTWALLOFTHECASTLE+"

trifidcipher(key,period,message)➞"SUEFECPHSEGYYJIXIMFOFOCEJLBSP"

步骤1:将键分成三个方块:

方块 1 方 2 块 3
1 2 3 1 2 3 1 2 3
1 E P S 1 M + Z 1 F G O
2 D U C 2 L K X 2 R I J
3 V W Y 3 N B T 3 H A Q
步骤2:找到上面方块中的明文字母,D在第1方块,第2行,第1列,所以D变成121。同理,E变成111,依此类推。

垂直写下每个字母对应的数字:

D E F E N D T H E E A S T W A L L O F T H E C A S T L E +
1 1 3 1 2 1 2 3 1 1 3 1 2 1 3 2 2 3 3 2 3 1 1 3 1 2 2 1 2
2 1 1 1 3 2 3 3 1 1 3 1 3 3 3 2 2 1 1 3 3 1 2 3 1 3 2 1 1
1 1 1 1 1 1 3 1 1 1 2 3 3 2 2 1 1 3 1 3 1 1 3 2 3 3 1 1 2
步骤3:目前仍是替换密码,很容易破解。现在,你必须使用周期,它通常是5−20之间的一个数字。

D E F E N D T H E E A S T W A L L O F T H E C A S T L E +
1 1 3 1 2 1 2 3 1 1 3 1 2 1 3 2 2 3 3 2 3 1 1 3 1 2 2 1 2
2 1 1 1 3 2 3 3 1 1 3 1 3 3 3 2 2 1 1 3 3 1 2 3 1 3 2 1 1
1 1 1 1 1 1 3 1 1 1 2 3 3 2 2 1 1 3 1 3 1 1 3 2 3 3 1 1 2
步骤4:将数字分组,水平读出每组中的数字,然后使用原始的键格替换回字母。

113 122 111 311 111 123 112 331 113 111 312 133 133 323 322
S U E F E C P H S E G Y Y J I
223 322 211 311 313 311 313 123 111 323 221 232 113 112
X I M F O F O C E J L B S P
步骤5:返回最终结果:
eMessage="SUEFECPHSEGYYJIXIMFOFOCEJLBSP"

输入输出格式
输入格式
第一行有一个字符串 key,表示一个 27 个字母的键;
第二行有一个整数 period, 表示中断周期;
第三行有一个字符串 message,表示要编码的字符串。
输出格式
输出一个字符串,表示编码后的字符串。

输入输出样例1
输入
EPSDUCVWYM+ZLKXNBTFGORIJHAQ
15
MUBASHIR
输出
+OHTW+XD

输入输出样例2
输入
EPSDUCVWYM+ZLKXNBTFGORIJHAQ
5
DEFENDTHEEASTWALLOFTHECASTLE+
输出
SUEFECPHSEGYYJIXIMFOFOCEJLBSP

说明提示
键、数据和输出都将包含唯一有效的大写字母和一个加号 (+) 作为第 27 个字母。
键将始终是完整的 27 个字母,没有重复,句点始终是正整数。

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2023-04-08 12:24
    关注

    以下内容部分参考ChatGPT模型:


    思路:
    根据题目要求,需要进行如下几个步骤:

    1. 将键分成三个方块,将每个明文字母分解为三元组。
    2. 对明文进行数字化,将每个字母对应到数字上。
    3. 将数字按照周期分组。
    4. 将每组数字转换成字母。
    5. 返回编码后的字符串。

    代码实现如下:


    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月15日
  • 创建了问题 4月8日

悬赏问题

  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
  • ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework