[语言月赛 202502] IPv6

Luogu
IDLGB4148
Time1000ms
Memory512MB
DifficultyP2
2025字符串(入门)语言月赛
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 地址对应的二进制格式。 ## Input 输入一行一个字符串,表示十六进制形式的 IPv6 地址。 ## Output 输出一行 $128$ 个数字字符,表示对应的二进制 IPv6 地址。字符与字符之间**不要**用空格隔开。 [samples] ## Note - 对于 $40\%$ 的测试数据,IPv6 地址没有应用简化规则; - 对于另外 $20\%$ 的测试数据,IPv6 地址没有应用连续零替代规则; - 对于 $100\%$ 的测试数据,输入的是一个合法的 IPv6 地址。
Samples
Input #1
1111:2222:3333:0000:0000:0000:7777:FFF
Output #1
00010001000100010010001000100010001100110011001100000000000000000000000000000000000000000000000001110111011101110000111111111111
Input #2
1111:2222:3333::7777:FFFF
Output #2
00010001000100010010001000100010001100110011001100000000000000000000000000000000000000000000000001110111011101111111111111111111
API Response (JSON)
{
  "problem": {
    "name": "[语言月赛 202502] IPv6",
    "description": {
      "content": "IP 地址是在网络中唯一标识一台网络设备的一串数字。IPv4 使用 $32$ 位二进制数作为 IP 地址,然而,随着网络设备数目的快速增加,IPv4 的总地址数已经耗尽。为了解决这个问题,计算机科学家引入了 IPv6。 IPv6 使用 $128$ 位二进制数作为 IP 地址。为了方便书写,常常将这 $128$ 位二进制数划分为 $8$ 组,每组对应 $16$ 位二进制,在书写时,每组写为 $4$",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P2"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGB4148"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "IP 地址是在网络中唯一标识一台网络设备的一串数字。IPv4 使用 $32$ 位二进制数作为 IP 地址,然而,随着网络设备数目的快速增加,IPv4 的总地址数已经耗尽。为了解决这个问题,计算机科学家引入了 IPv6。\n\nIPv6 使用 $128$ 位二进制数作为 IP 地址。为了方便书写,常常将这 $128$ 位二进制数划分为 $8$ 组,每组对应 $16$ 位二进制,在书写时,每组写为 $4$...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments