ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P2815 IPv6地址压缩

2021-07-11 08:31:49  阅读:185  来源: 互联网

标签:cnt int 压缩 lll P2815 cntt IPv6 include


Archie

很简单的小模拟

我们把每四位数和一个:作为一段进行处理

小小的特判

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
string s;
int a[9];
int main(){
	cin>>s;
	int l=s.length();
	for(int i=0;i<l;i+=5){
		a[i/5+1]=2;
		if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='0'&&s[i+3]=='0'){
			a[i/5+1]=1;
		}else
		if(s[i]=='0'){
			a[i/5+1]=2;
			for(int j=i;j<=i+3;++j){
				if(s[j]=='0'){
					a[i/5+1]++;
				}else{
					break;
				}
			}
		}
	}
	int cntt=0,cnt=0;
	int ll=0,lll=0;
	for(int i=1;i<=8;++i){
		if(a[i]==1){
			if(cnt==0){
				lll=i;
			}
			cnt++;	
		}else{
			if(cnt>cntt){
				cntt=cnt;
				ll=lll;
			}
			cnt=0;
		}
	}
	if(cnt>cntt){
				cntt=cnt;
				ll=lll;
			}
	for(int i=1;i<=8;++i){
		if(i==ll){
			cout<<":";
			if(i==1){
				cout<<":";
			}
			i+=cntt-1; 
		}else{
			if(a[i]==1){
				if(i!=8)
				cout<<"0:";
				else{
					cout<<"0";
				}
			}else
			for(int j=(i-1)*5+(a[i]==1?0:(a[i]-2));j<i*5;++j){
				cout<<s[j];
			}
		}
	}
	return 0;
} 

P2815 IPv6地址压缩

标签:cnt,int,压缩,lll,P2815,cntt,IPv6,include
来源: https://www.cnblogs.com/For-Miku/p/14995576.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有