牛客多校第六场 B Shorten IPv6 Address 模拟
题意:
给你一个二进制表示的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 模拟的更多相关文章
- 2019牛客多校第六场 B - Shorten IPv6 Address 模拟
B - Shorten IPv6 Address 题意 给你\(128\)位的二进制,转换为十六进制. 每\(4\)位十六进制分为\(1\)组,每两组用一个\(":"\)分开. 每 ...
- 2019 牛客多校第六场 B Shorten IPv6 Address
题目链接:https://ac.nowcoder.com/acm/contest/886/B 题目大意 给定一个 128 位的二进制 ip 地址,让你以 16 位一组,每组转成 16 进制,用冒号连接 ...
- 牛客多校第六场 C Generation I 组合数学 阶乘逆元模板
链接:https://www.nowcoder.com/acm/contest/144/C来源:牛客网 Oak is given N empty and non-repeatable sets whi ...
- 牛客多校第六场 J Heritage of skywalkert 随即互质概率 nth_element(求最大多少项模板)
链接:https://www.nowcoder.com/acm/contest/144/J来源:牛客网 skywalkert, the new legend of Beihang University ...
- 牛客多校第六场-H-Pair
链接:https://ac.nowcoder.com/acm/contest/887/H来源:牛客网 题目描述 Given three integers A, B, C. Count the numb ...
- 同构图+思维构造——牛客多校第六场E
考的其实是同构图的性质: 1.同构图的顶点数,边数相等 2.同构图通过点的映射后邻接矩阵相同 这篇博客讲的很好https://www.jianshu.com/p/c33b5d1b4cd9 本题还需要一 ...
- 2018牛客多校第六场 G.Pikachu
题意: 给出一棵n个点的树,每条边有边权.对这个树加边变成一个完全图.新加的边的权值为边上两点在树上的距离.求完全图上任意两点的最大流之和. 题解: 一共有C(n,2)个点对.假设当前求s到t之间的最 ...
- 2018牛客多校第六场 I.Team Rocket
题意: 给出n个区间和m个点(点按顺序给出且强制在线).每个区间只会被第一个他包含的点摧毁.问每个点能摧毁多少个区间以及每个区间是被哪个点摧毁的. 题解: 将n个区间按照左端点排序,然后用vector ...
- 牛客多校第六场C
一个数很大,并不能预处理,所以要进行公式变换,存前一个的值就好 #include <bits/stdc++.h> using namespace std; typedef long lon ...
随机推荐
- 2018-2-13-win10-uwp-iot
title author date CreateTime categories win10 uwp iot lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...
- linux常用命令-2网络相关命令
1.ip [选项] 操作对象{link|addr|route...} ip addr show #显示网卡IP信息 2.修改IP配置 1) root权限 2) cd /etc/sy ...
- leetcode-140-单词拆分②*
题目描述: 第一次提交:超时 O(N**N) class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[s ...
- CDH 下线节点
rm -rf /var/web/com/public 杜绝这种删除方式 停止集群下线的节点 步骤: 1 停止主机上的角色 2 解除授权 3 从集群中删除 4 为了避免数据丢失,必须一台一台的进行,如 ...
- NX二次开发-UF_OBJ_cycle_by_name遍历名字
使用前自己要看好名字是加在body,还是face,还是curve,或者其他,别加错了. NX9+VS2012 #include <uf.h> #include <uf_obj.h&g ...
- NX二次开发-UFUN导入表达式UF_MODL_import_exp
最近在做表达式创建,发现UFUN的创建表达式函数UF_MODL_create_exp,UF_MODL_create_exp_tag没有办法创建字符串类型的表达式,例如AA="BB" ...
- Windows内核驱动开发入门学习资料
声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处:本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任.(本 ...
- 接口(Interfaces)与反射(reflection) 如何利用字符串驱动不同的事件 动态地导入函数、模块
标准库内部如何实现接口的 package main import ( "fmt" "io" "net/http" "os" ...
- python数据结构之二叉树的统计与转换实例
python数据结构之二叉树的统计与转换实例 这篇文章主要介绍了python数据结构之二叉树的统计与转换实例,例如统计二叉树的叶子.分支节点,以及二叉树的左右两树互换等,需要的朋友可以参考下 一.获取 ...
- Area--->AreaRegistrationContext.MapRoute
文章引导 MVC路由解析---IgnoreRoute MVC路由解析---MapRoute MVC路由解析---UrlRoutingModule Area的使用 Area--->AreaRegi ...