TOJ 3581: 最简IPv6表示
3581: 最简IPv6表示 
Total Submit: 121 Accepted:18
Description
现在大家用的IP地址都是IPv4的,不过在不久的将来IPv6将要完全替代IPv4。IPv6的128位地址按每16位划分为一个位段,每个位段被转换为一个4位的16进制数,并用冒号“:”隔开,这种表示法称为冒号16进制表示法(colon hexadecimal)。如以下的IPv6地址:21DA:0000:0000:0000:02AA:000F:FE08:9C5A。不过这种表示方法不是很简洁,还可以通过以下的方法对IPv6地址进行简化:
1、压缩某个位段中的前导0来简化IPv6地址的表示。如上面的地址可以化简为21DA:0:0:0:2AA:F:FE08:9C5A。
2、有些类型的IPv6地址中包含了一长串0.为了进一步简化IP地址表达,在一个以冒号16进制法表示的IPv6地址中,如果几个连续位段的值都为0,那么这些0就可以简写为: :,称为双冒号表示法。那么,前面的结果又可以简化写为:21DA::2AA:F:FE08:9C5A。注意双冒号::在一个地址中只能出现一次。当出现多个可以用::表示的地方时,只对前面的用双冒号表示法。
Input
输入有多组数据以EOF结束。每组输入一个IPv6地址的完整表示。
Output
对于每组IPv6地址输出其最简的表示形式,每组输出占一行。如果输入的IPv6地址有错误,输出“It's not a IPv6 address!”。
Sample Input
21DA:0000:0000:0000:02AA:000F:FE08:9C5A
21DA:0103:0000:0000:02AA:000F:FE08:9C5A
21DZ:0000:0000:0000:02AA:000F:FE08:9C5A
Sample Output
21DA::2AA:F:FE08:9C5A
21DA:103::2AA:F:FE08:9C5A
It's not a IPv6 address!
Hint
注意输入输出的格式。
Source
搞下前缀中缀后缀的::就可以了
#include<stdio.h>
char s[];
int main()
{
while(~scanf("%s",s))
{
int f=;
for(int i=; s[i]; i++)
if(!(s[i]>=''&&s[i]<=''||s[i]>='A'&&s[i]<='F'||i%==&&s[i]==':')) f=;
if(f)printf("It's not a IPv6 address!\n");
else
{
int a[],f2=;
sscanf(s,"%X:%X:%X:%X:%X:%X:%X:%X",&a[],&a[],&a[],&a[],&a[],&a[],&a[],&a[]);
for(int i=; i<; i++)
{
if(a[i]==&&!f)
{
int f1=;
for(i=i+; i<; i++)
if(a[i]!=)break;
else f1=;
i--;
if(f1)
{
f=;
if(!f2&&i==)printf("::");
else if(!f2||i==)printf(":");
}
else printf("");
}
else printf("%X",a[i]);
if(i==)putchar();
else {putchar(':');f2=;}
}
}
}
return ;
}
TOJ 3581: 最简IPv6表示的更多相关文章
- 关于IPv6被拒
关于IPv6被拒 App在本地IPv6的测试环境下运行一切正常,结果又是被拒,悲剧原因还是IPv6的问题;求解决方法被拒原因We discovered one or more bugs i ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- iOS应用支持IPV6
一.IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充.目前当我们用iOS设备连接上Wifi.4G.3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IP ...
- IPv6协议介绍
IPv6是为了解决基于IPv4的TCP/IP协议簇遇到的问题而推出的下一代IP协议.由于IPv4中采用的编制方式使得可用的网络地址和主机地址的数目远低于理论数目,随着全球互联网的快速发展,现有的IPv ...
- ios应用,今年最蛋疼的6月,IPV6!!
刚刚苹果大会结束,你是不是后悔没去听他的发布会,!!有钱么你? iPV6 国人蒙蔽了,介是什么鬼,经过两三次的残忍拒绝,我认真去研究了iPV6, 2.2 Details We discovered ...
- 针对苹果最新审核要求:应用兼容IPv6
在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...
- 针对苹果最新审核要求 为应用兼容IPv6
本文授权转载,作者:我不是段誉(简书) 在WWDC2 015上苹果宣布iOS 9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.而今年5月初,苹果宣布6 ...
- iOS 上线因iPv6被拒,查询服务器是否支持iPv6,mac设置iPv6网络,手机测试iPv6
一. iOS----如何检查域名是否支持ipv6 iOS----------如何检查域名是否支持ipv6 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧 ...
- iOS----------如何检查域名是否支持ipv6
http://ipv6-test.com/validate.php 这个地址 也可以检测到! 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧. 2. ...
随机推荐
- python中的uuid4
Help on function uuid4 in module uuid: uuid4() Generate a random UUID.
- SQL Server 2016,2014 “无法找到数据库引擎启动句柄”
当我决定安装SharePoint 2016 IT预览版时,我想我应该将它安装在Windows Server 2016技术预览版以及SQL Server 2016社区技术预览版(CTP)上.我敢打赌,你 ...
- windows server 2008 r2 启用 Windows Defender
单击“开始”,指向“管理工具”,然后单击“服务器管理器”. 在“服务器管理器”中,单击“功能”,然后在“服务器管理器”细节窗格中的“功能摘要”下,单击“添加功能”. 此时会启动“添加功能向导”. 在“ ...
- Android视图控件架构分析之View、ViewGroup
在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过ViewGroup和View便形成了控件树,各个ViewGou ...
- UVA 11468 Substring (AC自动机)
用把失配边也加到正常边以后AC自动机,状态是长度递减的DAG,每次选一个不会匹配字符的转移. dp[u][L]表示当前在tire树上u结点长度还剩L时候不匹配的概率,根据全概率公式跑记忆化搜索. #i ...
- JS实现全排列
https://www.jb51.net/article/39291.htm JavaScript全排列的六种算法 具体实现 算法一:交换(递归) 复制代码代码如下: <html xmlns=& ...
- 在DataGridView控件中设置数据显示格式
实现效果: 知识运用: DataGridViewCellStyle类的Format属性 //获取或设置应用于DataGridView单元格的文本内容的格式字符串 public string Forma ...
- Sublime 安装Boxy + OmniMarkupPreviewer
Sublime 安装Boxy + OmniMarkupPreviewer Package Install 安装 网络安装 ctrl+反引号打开控制台,在控制台中输入代码 import urllib.r ...
- shell脚本,awk利用NF来计算文本显示的行数。
解释: 1.awk 'NF{a++;print a,$0;next}1' file4 首先判断NF是否存在值,第一行第二行第三行第四行都存在,进行执行后面的输出,输出后碰到next后,就结束了后面的操 ...
- 01_4_Struts路径问题
01_4_Struts路径问题 1. Struts路径问题说明 struts2中的路径问题是根据action的路径而不是jsp路径来确定,所有尽量不要使用相对路径. 虽然可以使用redirect方式解 ...