变长编码
时间限制:1.0 s
内存限制:128.0 MB
问题描述
小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到231-1这么大的数,生活中常用的0~100这种数也同样需要用4个字节的补码表示,太浪费了些。
热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:
1. 对于给定的正整数,首先将其表达为二进制形式。例如,(0) {10}=(0) {2},(926) {10}=(1110011110) {2} 。
2. 将二进制数从低位到高位切分成每组7bit,不足 bit的在高位用0填补。例如, (0) {2}变为0000000的一组,(1110011110) {2}变为0011110和0000111的两组。
3. 由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上0,否则在最高位填上1。于是,0的变长编码为00000000一个字节,926的变长编码为10011110和00000111两个字节。
这种编码方式可以用更少的字节表达比较小的数,也可以用很多的字节表达非常大的数。例如,987654321012345678的二进制为(0001101 1011010 0110110 1001011 1110100 0100110 1001000 0010110 1001110) {2},于是它的变长编码为(十六进制表示) CE 96 C8 A6 F4 CB B6 DA 0D ,共9个字节。
你能通过编写程序,找到一个正整数的变长编码吗?
输入描述
输入第一行,包含一个正整数N。约定 0≤N≤1018。
输出描述
输出一行,输出N对应的变长编码的每个字节,每个字节均以2位十六进制表示(其中,A-F使用大写字母表示),两个字节间以空格分隔。
样例输入1
0
样例输出1
00
样例输入2
926
样例输出2
9E 07
样例输入3
987654321012345678
样例输出3
CE 96 C8 A6 F4 CB B6 DA 0D
相似题推荐
执行以下Python 代码后,输出的结果是?()
try:
print(1, end="")
raise ValueError("x")
except ValueError as e:
print(2, end="")
else:
print(3, end="")
finally:
print(4, end="") | A. 14 |
B. 124 |
| C. 1234 |
D. 程序报错 |
2026年春节联欢晚会上一个武术表演节目《武BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。
| A. 用于检测重心的重力传感器 |
B. 预装的AI算法程序 |
| C. 接收动作指令的遥控器 |
D. 拍摄其他机器人的摄像头 |
执行以下Python 代码后,输出的结果是[6 , 7]。
print(list(filter(lambda x: x > 5 , [3 , 6 , 7 , 2])))
| A.正确 | B.错误 |
执行以下Python代码后,输出的结果是'789\n456 '。
with open('test.txt', 'w') as f:
f.write('123\n456')
with open('test.txt', 'r+') as f:
f.seek(0, 2)
f.write('789')
f.seek(0)
print(repr(f.read())) | A.正确 | B.错误 |
礼盒排序
时间限制:1.0 s
内存限制:512.0 MB
题目描述
商店推出了许多礼盒,每个礼盒中包含k件商品,每件商品都有一个价格。
现在需要对这些礼盒进行排序,排序规则如下:
1. 先按礼盒总价格从小到大排序;
2. 如果总价格相同,按礼盒中最贵商品的价格从小到大排序;
3. 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序;
4. 如果仍然相同,按礼盒编号从小到大排序。
请输出排序后的礼盒编号。
输入格式
第一行包含两个整数n和k,分别表示礼盒数量和每个礼盒中商品的数量。
接下来n行,每行包含k个整数,第i行表示第i个礼盒中各商品的价格。
输出格式
输出一行,包含排序后的礼盒编号(编号从1开始),用空格分隔。
输入样例
4 3 3 5 2 4 1 5 2 2 4 3 4 3
输出样例
3 4 2 1
样例解释
4 个礼盒分别为:

排序过程:
1. 按总价排序,3号礼盒总价最小;
2. 其余总价均为 10,再按最大值排序,4号最大值更小;
3. 1号和2号最大值相同,再按最小值排序,2号更小。
最终顺序为:3 4 2 1
数据范围
保证1≤n≤103,1≤k≤10,商品价格≤104。
