十六届蓝桥杯 python 组研究生组省赛
约 589 字大约 2 分钟
2025-05-02
试题 A: 偏蓝 (本题总分:5 分)
【问题描述】
小蓝特别喜欢蓝色。最近,小蓝学习了颜色在计算机中的一种表示方法: 用三个 0 至 255 之间的整数(包含 0 和 255)分别表示颜色的红、绿、蓝三个 分量。 在这种颜色的表示方法下,小蓝定义了一种颜色是偏蓝的,是指蓝色分量 大于红色分量,且蓝色分量大于绿色分量。例如,红、绿、蓝分别为 10 、10 、 11 时是偏蓝的;红、绿、蓝分别为 100 、200 、200 时不是偏蓝的。 小蓝想知道,有多少种不同的颜色是偏蓝的。两种颜色如果在红、绿、蓝 中至少有一个分量值不同,就认为是不同的。
题解
5559680 开心的送分题, 用数学的话就是 ∑i=0255i2.
ans = 0
for i in range(256):
for j in range(0,i):
for k in range(0,i):
ans+=1
# for i in range(256):
# ans += i**2
print(ans)
B:IPv6
题目描述
小蓝最近在学习网络工程相关的知识。他最近学习到,IPv6 地址本质上是一个 128 位的二进制数,而字符串形式的 IPv6 地址是由被冒号分开的八段 16 进制数组成的,例如, 下面每行是一个字符串形式的 IPv6 地址:
0000:0000:0000:0000:0000:0000:0000:0000
0000:0001:0000:0000:0000:0001:0000:0000
0000:0001:00ab:0000:0023:0000:0a00:0e00
0000:0000:00ab:0000:000a:0001:0a00:0e00
0000:0000:00ab:0000:0000:0001:0a00:0e00
其中,每一段最长 4 位,且每一段的前导零都可以去掉 (如果 4 位都为 0 需要写成 0 )。
另外,IPv6 地址还可以将其中相邻的值为 0 的段合并压缩起来,用两个冒号来表示,不过只能压缩一段。
例如上述地址最短的压缩后的形式分别为:
::
0:1::1:0:0
0:1:ab::23:0:a00:e00
::ab:0:a:1:a00:e00
0:0:ab::1:a00:e00
小蓝想知道,所有 IPv6 地址的最短压缩形式的长度的和为多少?由于答案很大 (甚至超过了 128 位二进制整数的范围),请填写答案时填写这个总和除以 109+7 的余数。