zoukankan      html  css  js  c++  java
  • P2815 IPv6地址压缩

    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地址压缩

  • 相关阅读:
    脚本——基础命令
    ELK 安装
    keepalived+lvs
    zabbix安装
    lnmp
    nagios安装
    nginx-tomcat动静分离
    课时五、boost与adaboost
    课时四、决策树和随机森林
    课时三、回归实践
  • 原文地址:https://www.cnblogs.com/For-Miku/p/14995576.html
Copyright © 2011-2022 走看看