#P14602. [NWRRC 2025] Compact Encoding

[NWRRC 2025] Compact Encoding

Description

二进制格式通常使用紧凑的整数表示方法。考虑将一个 32 位无符号整数写入文件:你必须始终保留 4 个字节来表示它(记住,8 位构成一个字节)。然而,在许多实际应用中,整数值往往很小。使用固定的 4 字节表示法来写入这些小数值会导致文件大部分被零字节填充。

为了使表示更紧凑,我们引入以下编码方案。每个值表示为一个字节序列 b1,b2,,bkb_1, b_2, \ldots, b_k,其中每个 bib_i00255255 之间的整数(包含)。每个字节的最高有效位用作继续标志,较低的 77 位携带实际数据。如果继续标志为 11,则表示后面还有更多字节;对于最后一个字节,该标志为 00。该表示是 大端序 的,意味着 b1b_1 包含编码值的最高有效位。

例如,以下是 n=112025n = 112025 的紧凑表示方法。首先,我们找到它的二进制表示:

112025=110110101100110012112025 = 11011010110011001_2

接下来,我们将其分割为 7 位块,必要时在左侧用零填充:

:::align{center} 00001100000110 / 11010111101011 / 00110010011001 :::

前两个块后面还有块,因此对应字节的最高有效位设置为 11。最后一个块没有后续块,因此其最高有效位为 00。这给我们:

$$\begin{array}{l} b_1 = 10000110_2 = 134\\ b_2 = 11101011_2 = 235\\ b_3 = 00011001_2 = 25\\ \end{array}$$

给定一个整数 nn,你的任务是找到它的紧凑表示。

Input Format

仅一行包含一个整数 nn0n23110 \le n \le 2^{31}-1)。

Output Format

输出 00255255 之间(包含)的整数序列,表示 nn 的紧凑编码。编码不能包含数据位为零的前导字节:也就是说,不能以 128128 开头。

112025
134 235 25
128
129 0
0
0
42
42
16384
129 128 0
2147483647 
135 255 255 255 127

Hint

翻译由 DeepSeek V3 完成