【万能遥控器】

题目描述

Z 企业有各种各样的机器人。为了控制所有机器人,操作员 Tom 造了一个“万能遥控器”。只要向遥控器输入一个机器人的 IP 地址,就能遥控这个机器人。可是机器人实在太多,以至于使用 IPv4 协议都不能够唯一地标记每一个机器人。Tom 听说 Ipv6 协议拥有近无穷个地址,于是他就想用 IPv6 协议为机器人设定 IP 地址。

不过,完整的 IPv6 地址很长(有39个字符),手工输入很费时间,所以 IPv6 有一套简化的机制。

IPv6 的地址定义如下:
IPv6 的地址有 128 位,以 16 位为一分组,每个 16位 分组写成 4 个十六进制数,中间用冒号分割,称为冒号分十六进制格式。
例如:21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 是一个完整 IPv6 地址。

IPv6 地址中每个 16 位分组中的前导零位可以去除做简化表示,但每个分组必须至少保留一位数字。如上例中的地址,去除前导零位后可写成:
21DA:D3:0:2F3B:2AA:FF:FE28:9C5A

某些地址中可能包含很长的零序列,为进一步简化表示法,还可以将冒号十六进制格式中相邻分组的连续零位合并,用双冒号“::”表示。“::”符号在一个地址中只能出现一次,该符号也能用来压缩地址中前部和尾部相邻的连续零位。
注意:(一个单独的 0 分组不能使用“::”省略。

例如地址:
样例一:1080:0:0:0:8:800:200C:417A  可表示为压缩格式  1080::8:800:200C:417A
样例二:0:0:0:0:0:0:0:1   可表示为压缩格式  ::1
样例三:0:0:0:0:0:0:0:0   可表示为压缩格式  ::

现在,Tom 给了你一些 IPv6 地址,请你编写程序,把它们转换成完整的地址。

输入格式

第一行为一个正整数 N ,表示将有 N 个 IP 地址。
接下来有 n 行,每行一个非空字符串,表示一个地址。输入只包含数字、大写字母、冒号(:)和换行符,输入每行不超过 39 个字符。

输出格式

输出一共 N 行,每行一个字符串。对每个输入的字符串,如果符合 IPv6 标准,则输出其对应的完整的 IPv6 地址,否则输出“INVALID”。

样例数据 1

输入

4
1080::8:800:200C:417A
::1
::
1234567890ABCDEF

输出

1080:0000:0000:0000:0008:0800:200C:417A
0000:0000:0000:0000:0000:0000:0000:0001
0000:0000:0000:0000:0000:0000:0000:0000
INVALID

备注

【数据范围】
对100%的数据,保证:1≤N≤35

裸裸的模拟题,考点不在如何输出,在于判断不合法情况,不合法情况没考虑完全WA掉两个点哭瞎……

下面是代码:

 

stdKonjac

stdKonjac

一只挣扎的蒟蒻ACMer

评论太激烈有些评论需要亲动动手指翻页

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

*