在看了马老师饭堂一个月之后,饼老师成为了合格的谜语人并尝试和你进行加密通话。
饼老师会说出一串十六进制表示的数字序列,对于每一个数字,他都要使用一些编码规则对这个数字重新编码一次。现在饼老师向你发出了加密通话请求并且给了你一串加密过的谜语。为了简化问题,饼老师将每个数字加密后的谜语长度限制在 $3$ 字节以内。现在告诉你他用来加密的方法,你能不能翻译出来饼老师到底说了什么?
加密规则解释如下:
长度(字节) | 加密模板(二进制表示) | 位数 |
---|---|---|
1 | 0xxxxxxx | 7 |
2 | 110xxxxx 10xxxxxx | 11 |
3 | 1110xxxx 10xxxxxx 10xxxxxx | 16 |
表格的第一列表示加密后谜语的长度,第二列表示加密时使用的模板,第三列表示可以加密的位数
假如现在有一个数字 $V$ ,将它加密成 $k$ 字节的谜语的步骤如下:
举个例子,一个数字 $\rm 63H$ ,其二进制表示为 $1100011$,加密后有如下三个可能的值:
scanf
中使用 %x
来输入十六进制数;输入数据包括两行:
第一行为一个整数 $n\ (1\leq n\leq 1000)$ ,表示谜语的总字节数。
第二行为以空格分隔的 $n$ 个整数 $a_1, a_2, \dots, a_n\ ({\rm 01H} \leq a_i \leq {\rm FFH})$,每个整数都是一个十六进制的数字,含义在上面给出。
输出数据包括两行:
第一行为一个整数 $len$ ,表示饼老师加密前的数字序列的长度。
第二行为 $len$ 个整数,每个整数表示一个加密前的数字,两个整数间以一个空格分隔。