题意:

给你一个二进制表示的IPv6地址,让你把它转换成8组4位的16进制,用冒号分组的表示法。单组的前导0可以省略,连续多组为0的可以用两个冒号替换,但是只允许替换一次。把这个地址通过这几种省略方式,长度缩到最短,然后输出字典序最小的。

题解:

计算出八组四位16进制数的值,找出连续的0,用冒号替换即可。

坑点:1,替换连续的0的时候,一定要注意冒号不能多加

2,题目要求字典序最小,因为冒号的ascii值大于0,那就优先替换后面的,但是,同样长度的连续0,替换掉中间的,比替换掉两边的,最后得到的长度要短1,因此要优先替换掉中间的。

#include<iostream>
#include<cstring>
#include<string>
using namespace std;
char ip[],fl[];
int count[];
int qj[];
int main(){
// printf("%d",'9');
//0=48 :=58 省略最右边的
//
int k;
scanf("%d",&k);
for(int I=;I<=k;I++){
scanf("%s",ip);
int l=;
// msmset(qj,0,sizeof qj);
for(int i=;i<;i++){
qj[i]=;
for(int j=;j<;j++){
qj[i]<<=;
qj[i]+=ip[i*+j]-'';
}
}
int lx0=,lx0max=,lx0over=; for(int i=;i>=;i--){
if(qj[i]==){
lx0++;
if(lx0>lx0max){
lx0over=i;
lx0max=lx0;
}else if(lx0==lx0max){
if(lx0over+lx0max== && i!=){
lx0over=i;
lx0max=lx0;
}
}
}else{
lx0=;
}
} printf("Case #%d: ",I);
bool alrdy=; for(int i=;i<;i++){
if(lx0max>= && lx0over==i){
if(alrdy==)printf("::");
else printf(":");
alrdy=;
i+=lx0max-;
}else{
printf("%x",qj[i]);
alrdy=;
if(i<){
printf(":");
alrdy=;
}
}
}
printf("\n");
}
}

牛客多校第六场 B Shorten IPv6 Address 模拟的更多相关文章

  1. 2019牛客多校第六场 B - Shorten IPv6 Address 模拟

    B - Shorten IPv6 Address 题意 给你\(128\)位的二进制,转换为十六进制. 每\(4\)位十六进制分为\(1\)组,每两组用一个\(":"\)分开. 每 ...

  2. 2019 牛客多校第六场 B Shorten IPv6 Address

    题目链接:https://ac.nowcoder.com/acm/contest/886/B 题目大意 给定一个 128 位的二进制 ip 地址,让你以 16 位一组,每组转成 16 进制,用冒号连接 ...

  3. 牛客多校第六场 C Generation I 组合数学 阶乘逆元模板

    链接:https://www.nowcoder.com/acm/contest/144/C来源:牛客网 Oak is given N empty and non-repeatable sets whi ...

  4. 牛客多校第六场 J Heritage of skywalkert 随即互质概率 nth_element(求最大多少项模板)

    链接:https://www.nowcoder.com/acm/contest/144/J来源:牛客网 skywalkert, the new legend of Beihang University ...

  5. 牛客多校第六场-H-Pair

    链接:https://ac.nowcoder.com/acm/contest/887/H来源:牛客网 题目描述 Given three integers A, B, C. Count the numb ...

  6. 同构图+思维构造——牛客多校第六场E

    考的其实是同构图的性质: 1.同构图的顶点数,边数相等 2.同构图通过点的映射后邻接矩阵相同 这篇博客讲的很好https://www.jianshu.com/p/c33b5d1b4cd9 本题还需要一 ...

  7. 2018牛客多校第六场 G.Pikachu

    题意: 给出一棵n个点的树,每条边有边权.对这个树加边变成一个完全图.新加的边的权值为边上两点在树上的距离.求完全图上任意两点的最大流之和. 题解: 一共有C(n,2)个点对.假设当前求s到t之间的最 ...

  8. 2018牛客多校第六场 I.Team Rocket

    题意: 给出n个区间和m个点(点按顺序给出且强制在线).每个区间只会被第一个他包含的点摧毁.问每个点能摧毁多少个区间以及每个区间是被哪个点摧毁的. 题解: 将n个区间按照左端点排序,然后用vector ...

  9. 牛客多校第六场C

    一个数很大,并不能预处理,所以要进行公式变换,存前一个的值就好 #include <bits/stdc++.h> using namespace std; typedef long lon ...

随机推荐

  1. SQL索引操作

    1. 创建索引 create index 索引名 on 表名(列名); 2. 删除索引 drop index 索引名; 3. 创建组合索引 create index 索引名 on 表名(列名1,,列名 ...

  2. 创建maven项目的时候:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. 解决办法

    问题: https://yq.aliyun.com/ziliao/364921      尝试没成功. https://www.aliyun.com/jiaocheng/296712.html   尝 ...

  3. jquery获取select选中项 自定义属性的值

    <select id="serialNo" > <option value=''1' data-id="001">第一次</opt ...

  4. Jenkins配置gitlab

    一.免密公钥登陆1 登陆gitlab 搜ssh Keys 2 添加在Jenkins 服务器本地创建好的公钥 保存完成 也可以手动添加 到/var/opt/gitlab/.ssh/authorized_ ...

  5. js中变量对象和活动对象的区别 闭包时的区别

    变量对象:就是执行环境中包含了所有的变量和函数的对象 活动对象:正在被执行或引用的变量和函数 在上述代码中 ,全局定义了函数compare()和变量result,后台会创建一个作用域链(scope c ...

  6. 树形dp换根,求切断任意边形成的两个子树的直径——hdu6686

    换根dp就是先任取一点为根,预处理出一些信息,然后在第二次dfs过程中进行状态的转移处理 本题难点在于任意割断一条边,求出剩下两棵子树的直径: 设割断的边为(u,v),设down[v]为以v为根的子树 ...

  7. linux网络速率监控

    #!/bin/bash #作者:fafu_li #时间: #监控网卡传输速率 source /etc/profile #加载系统环境变量 source $HOME/.bash_profile #加载用 ...

  8. sql中desc的妙用

    很多情况下对表内部结构不熟悉,想看下我创建的表里面又多少表明,又想他按照首字母的规律排列, 这时候就要用desc +表名了. desc t_bike_info; hive> desc t_bik ...

  9. Python高级核心技术97讲✍✍✍

    Python高级核心技术97讲  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以 ...

  10. mysql 触发器实现级联删除有外键的多张表

    2019-10-12 10:17:44 1.数据,建表时有可能会报错,只需要把前三行注释删掉就行 -- ---------------------------- -- Table structure ...