题意:

给你一个二进制表示的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. zmq作为守护进程?等待连接

    服务端是作为守护进程在运行的,客户端connect成功,但write时直接退出了,我在想肯能服务端socket在write时已经失效了,不然为什么会出现write时进程退出呢?现在的问题是,我要怎么才 ...

  2. vue 学习三 v-model 表单绑定输入 以及修饰符的用处

    v-model 指定使用过vue的同学都应该是很熟悉的了,这里就不多介绍,本章主要就是记录一些v-model非常实用的修饰符和对于v-model在html文本框,多行文本框,选择框,单选框,复选框上对 ...

  3. flink idea 打包jar 并放到集群上运行

    flink idea 打包jar 并放到集群上运行 在开始之前注意前提,当前项目的scala的版本要和集群上的scala一致   我已经创建好一个wordCount的flink项目   注意项目的po ...

  4. leetcode-168周赛-1295-统计位数为偶数的数字

    题目描述: 方法一:O(N) class Solution: def findNumbers(self, nums: List[int]) -> int: ans=0 for num in nu ...

  5. hdu多校第九场 1005 (hdu6684) Rikka with Game 博弈

    题意: 给一个小写字母组成的字符串,每回合轮到某人时,此人可以选择让某位+1(如果是z则变回a),或者直接结束游戏. 先手希望游戏结束时字符串字典序尽量小,后手希望游戏结束时字符串字典序尽量大,求游戏 ...

  6. Windows内存管理(1)--分配内核内存 和 使用链表

    1.      分配内核内存 Windows驱动程序使用的内存资源非常珍贵,分配内存时要尽量节约.和应用程序一样,局部变量是存放在栈空间中的.但栈空间不会像应用程序那么大,所以驱动程序不适合递归调用或 ...

  7. opencv-图像形态学之开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    转自:https://blog.csdn.net/poem_qianmo/article/details/24599073 1.1 开运算(Opening Operation) 开运算(Opening ...

  8. 剑指offer——11旋转数组中最小的数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...

  9. sklearn 调用逻辑回归函数训练数据时出现 “unknown label type:unknown”

    problemsolution:

  10. 自动化测试工具2-testcomplete

    今天来说说testcomplete的使用 录了一个简单案例视频,网址如下:https://v.qq.com/x/page/f05116a062y.html 第一步是创建一个工程: 输入工程名,和选择工 ...