通过率 65% · 提交 84 · 通过 55
在魔法大陆上,存在一种古老的魔法仪式——符文解析术,掌握此术的魔法师可以操控魔法栈来执行一系列指令。每一条指令都刻录在神秘的中,只有最聪慧的魔法师才能正确解析它们。 给定一个不含空格的十六进制符文字符串 `S`,其中包含多种魔法栈操作指令。你的任务是解析 `S` 并执行所有指令,最终输出栈中的所有元素,从栈顶到栈底依次输出。 输入: - 输入仅包含 一个 由 `0-9` 和 `A-F` 组成的十六进制字符串 `S`。 - `1 <= |S| <= 10^5`。 符文字符串 `S` 可能包含以下 5 类魔法指令: 1. 符文刻印(数值入栈) - 指令格式:`C000XXXXXXXX` - 作用:将 `XXXXXXXX`(8 个十六进制字符)转换为 十进制数 `X` 并压入栈。 2. 符文计算(栈顶运算) - 加法符文 (`C001`): - 需要栈顶的两个元素 `A` 和 `B`(若栈不足 2 个,则缺少的部分用 `0` 代替)。 - 计算 `A + B` 并压入栈。 - 减法符文 (`C002`): - 计算 `A - B`(使用)并压入栈。 - 乘法符文 (`C003`): - 计算 `A * B` 并压入栈。 3. 符文湮灭(弹出栈顶元素) - 指令格式:`C004` - 作用:弹出栈顶元素(若栈为空,则忽略此操作)。 4. 时间跳跃(忽略后续命令) - 指令格式:`C021XXXXXXXX` - 作用: - 将 `XXXXXXXX`(8 个十六进制字符)转换为 十进制数 `X` - 跳过接下来的 `X` 条指令,直接解析之后的符文。 输出: - 第一行输出一个整数 `m`,表示栈中的元素个数。 - 接下来 `m` 行按从栈顶到栈底的顺序,依次输出栈中的元素。 示例: 输入: C0000000001AC0000000000AC001 输出: 1 36 说明: C0000000001A → 解析 `0000001A` 为 `26`,入栈 [26] C0000000000A → 解析 `0000000A` 为 `10`,入栈 [26, 10] C001 → 取出 26, 10,计算 `26 + 10 = 36`,入栈 [36] 输入: C00000000014C002 输出: 1 20 说明: C00000000014 → 解析 `00000014` 为 `20`,入栈 [20] C002 → 需要 `A = 20, B = 0`(因栈中只有 1 个数)。计算 `20 - 0 = 20`,入栈 [20] 输入: C00000000005C003 输出: 1 0 说明: C00000000005 → 解析 `00000005` 为 `5`,入栈 [5] C003 → 需要 `A = 5, B = 0`(栈中只有 1 个数)。计算 `5 * 0 = 0`,入栈 [0]
这类题属于华为可信认证科目一方向中「可信 / 系统设计」方向的高频题型,通常考察对「可信 / 系统设计」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
0-9 和 A-F 组成的十六进制字符串 S。1 <= |S| <= 10^5。符文字符串 S 可能包含以下 5 类魔法指令:
1. 符文刻印(数值入栈)
C000XXXXXXXXXXXXXXXX(8 个十六进制字符)转换为 十进制数 X 并压入栈。2. 符文计算(栈顶运算)
加法符文 (C001):
A 和 B(若栈不足 2 个,则缺少的部分用 0 代替)。A + B 并压入栈。减法符文 (C002):
A - B(使用补码计算)并压入栈。乘法符文 (C003):
A * B 并压入栈。3. 符文湮灭(弹出栈顶元素)
C0044. 时间跳跃(忽略后续命令)
指令格式:C021XXXXXXXX
作用:
XXXXXXXX(8 个十六进制字符)转换为 十进制数 XX 条指令,直接解析之后的符文指令。C000 和 C021 的参数部分保证完整。
m,表示栈中的元素个数。m 行按从栈顶到栈底的顺序,依次输出栈中的元素。示例 1
输入示例
C0000000001AC0000000000AC001
输出示例
1 36
C0000000001A → 解析 0000001A 为 26,入栈 [26]
C0000000000A → 解析 0000000A 为 10,入栈 [26, 10]
C001 → 取出 26, 10,计算 26 + 10 = 36,入栈 [36]
示例 2
输入示例
C00000000014C002
输出示例
1 20
C00000000014 → 解析 00000014 为 20,入栈 [20]
C002 → 需要 A = 20, B = 0(因栈中只有 1 个数)。
计算 20 - 0 = 20,入栈 [20]
示例 3
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
输入示例
C00000000005C003
输出示例
1 0
C00000000005 → 解析 00000005 为 5,入栈 [5]
C003 → 需要 A = 5, B = 0(因栈中只有 1 个数)。
计算 5 * 0 = 0,入栈 [0]
示例 4
输入示例
C0000000000AC00000000005C003C00000000003C001C002C00000000014C004C02100000002C00000000032
输出示例
1 53
C0000000000A → 10 入栈 [10] C00000000005 → 5 入栈 [10, 5] C003 → 10 * 5 = 50 入栈 [50] C00000000003 → 3 入栈 [50, 3] C001 → 50 + 3 = 53 入栈 [53] C002 → 53 - 0 = 53(栈不足 2 个,B = 0)入栈 [53] C00000000014 → 20 入栈 [53, 20] C004 → 弹出 20,栈变为 [53] C02100000002 → 跳过 2 条指令 C00000000032 → 被跳过,不执行
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有