#P14602. [NWRRC 2025] Compact Encoding
[NWRRC 2025] Compact Encoding
Description
二进制格式通常使用紧凑的整数表示方法。考虑将一个 32 位无符号整数写入文件:你必须始终保留 4 个字节来表示它(记住,8 位构成一个字节)。然而,在许多实际应用中,整数值往往很小。使用固定的 4 字节表示法来写入这些小数值会导致文件大部分被零字节填充。
为了使表示更紧凑,我们引入以下编码方案。每个值表示为一个字节序列 ,其中每个 是 到 之间的整数(包含)。每个字节的最高有效位用作继续标志,较低的 位携带实际数据。如果继续标志为 ,则表示后面还有更多字节;对于最后一个字节,该标志为 。该表示是 大端序 的,意味着 包含编码值的最高有效位。
例如,以下是 的紧凑表示方法。首先,我们找到它的二进制表示:
接下来,我们将其分割为 7 位块,必要时在左侧用零填充:
:::align{center} / / :::
前两个块后面还有块,因此对应字节的最高有效位设置为 。最后一个块没有后续块,因此其最高有效位为 。这给我们:
$$\begin{array}{l} b_1 = 10000110_2 = 134\\ b_2 = 11101011_2 = 235\\ b_3 = 00011001_2 = 25\\ \end{array}$$给定一个整数 ,你的任务是找到它的紧凑表示。
Input Format
仅一行包含一个整数 ()。
Output Format
输出 到 之间(包含)的整数序列,表示 的紧凑编码。编码不能包含数据位为零的前导字节:也就是说,不能以 开头。
112025
134 235 25
128
129 0
0
0
42
42
16384
129 128 0
2147483647
135 255 255 255 127
Hint
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号