#C. 网络地址(ip)

    传统题 1000ms 256MiB

网络地址(ip)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

问题描述

网际协议第6版(英语:Internet Protocol version 6,缩写:IPv6)是网际协议的最新版本,用作互联网的协议。用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进。

IPv6的设计目的是取代IPv4,然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢。在2022年4月,通过IPv6使用Google服务的用户百分率首次超过40%。

IPv6具有比IPv4大得多的编码地址空间。这是因为IPv6采用 128128 位的地址,而IPv4使用的是 3232 位。因此新增的地址空间支持 21282^{128}(约 3.4×10383.4×10^{38})个地址,具体数量为 $340,282,366,920,938,463,463,374,607,431,768,211,456$ 个,也可以说成 163216^{32} 个。

IPv6二进位制下为 128128 位长度,以 1616 位为一组,每组以冒号“:”隔开,可以分为 88 组,每组以 44十六进制方式表示。例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344 是一个合法的IPv6地址。

同时IPv6在某些条件下可以省略:

  1. 每项数字前导的0可以省略,省略后前导数字仍是0则继续,例如下组IPv6是等价的: 2001:0db8:02de:0000:0000:0000:0000:0e13

    2001:db8:2de:0000:0000:0000:0000:e13

    2001:db8:2de:000:000:000:000:e13

    2001:db8:2de:00:00:00:00:e13

    2001:db8:2de:0:0:0:0:e13

  2. 可以用双冒号“::”表示一组0或多组连续的0,但只能出现一次,例如下组IPv6是等价的:

    1. 如果四组数字都是零,可以被省略。遵照以上省略规则,下面这两组IPv6都是相等的。

      • 2001:db8:2de:0:0:0:0:e13

        2001:db8:2de::e13

      • 2001:0db8:0000:0000:0000:0000:1428:57ab

        2001:0db8:0000:0000:0000::1428:57ab

        2001:0db8:0:0:0:0:1428:57ab

        2001:0db8:0::0:1428:57ab

        2001:0db8::1428:57ab

    2. 2001::25de::cade 是非法的,因为双冒号出现了两次。它有可能是下种情形之一,造成无法推断。

      • 2001:0000:0000:0000:0000:25de:0000:cade
      • 2001:0000:0000:0000:25de:0000:0000:cade
      • 2001:0000:0000:25de:0000:0000:0000:cade
      • 2001:0000:25de:0000:0000:0000:0000:cade
    3. 如果这个地址实际上是IPv4的地址,后32位可以用10进制数表示;因此::ffff:192.168.89.9 相等于::ffff:c0a8:5909。

珊迪想要制作一个全新的工具(与真实的IP转换无关),具体的功能是给你一个IPv6的网络地址其中前 9696 位是IPv6的格式,后 3232 位是一个完整的IPv4格式的IP(即由 3232 位二进制数组成,为便于使用,以点分十进制XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于 2552551010 进制数),并且没有任何的省略,你的任务很简单,就是把它转换成一个完全的IPv6格式的地址后进行省略。在做双冒号省略时,我们只会对首次出现的一组0或多组连续的0进行双冒号省略,并且后续再遇见一组0或多组连续的0的情况无需进行双冒号省略。

输入格式

一行字符串表示原始的网络地址

输出格式

修改后的网络地址

2001:0db8:02de:0000:0000:0000:192.168.89.9
2001:db8:2de::c0a8:5909
1111:1111:0111:0011:1111:1111:111.111.0.0
1111:1111:111:11:1111:1111:6f6f::
1111:1111:0000:0011:1111:1111:111.111.0.0
1111:1111::11:1111:1111:6f6f:0

数据范围

对于 30%30\% 的数据,保证转换后的网络地址不会出现任何前导 00

另有 30%30\% 的数据,保证连续的一组 00 或多组连续的 00 只会出现一次

对于 100%100\% 的数据,保证原始的网络地址是一个合法的地址(范围、格式),只由数字、小写字母及两种符号组成

10.25 CSP-J 模拟赛补题

未认领
状态
已结束
题目
4
开始时间
2024-10-25 0:00
截止时间
2024-11-2 23:59
可延期
24 小时