T573808 [语言月赛 202502] IPv6
题目描述
IP 地址是在网络中唯一标识一台网络设备的一串数字。IPv4 使用 $32$ 位二进制数作为 IP 地址,然而,随着网络设备数目的快速增加,IPv4 的总地址数已经耗尽。为了解决这个问题,计算机科学家引入了 IPv6。
IPv6 使用 $128$ 位二进制数作为 IP 地址。为了方便书写,常常将这 $128$ 位二进制数划分为 $8$ 组,每组对应 $16$ 位二进制,在书写时,每组写为 $4$ 位十六进制数。每两组间,使用 `:` 隔开。
下图展示了一个 IPv6 地址的二进制表示形式与十六进制简写格式。
![](https://cdn.luogu.com.cn/upload/image_hosting/1symr2e8.png)
然而,十六进制的书写依然非常不方便,因此,IPv6 进一步引入了 IP 地址的简写规则:
1. **前导零省略规则。** 在每一组中,前导零可以省略。例如 `FC00:0:130F:0:9C0:876A:130B:0` 与 `FC00:0000:130F:0000:09C0:876A:130B:0000` 表示的是同一个地址。
2. **连续零替代规则。** 如果一组或连续多组全为零,可以用双冒号 `::` 代替,但整个 IPv6 地址中只能使用一次 `::`。例如,`2001:DB8:130F::9C0:876A:130B` 与 `2001:0DB8:130F:0000:0000:09C0:876A:130B` 表示的是同一个地址。**`::` 可以出现在 IPv6 地址串的两端。**
现在,给出一个十六进制形式的 IPv6 地址。该地址**可能**应用了上述的简写规则,请输出该 IPv6 地址对应的二进制格式。
输入格式
无
输出格式
无
说明/提示
- 对于 $40\%$ 的测试数据,IPv6 地址没有应用简化规则;
- 对于另外 $20\%$ 的测试数据,IPv6 地址没有应用连续零替代规则;
- 对于 $100\%$ 的测试数据,输入的是一个合法的 IPv6 地址。