#include<bits/stdc++.h>
using namespace std;
int a[100];
int maxn = -1,max_where = 10;
int main(){
scanf("%x:%x:%x:%x:%x:%x:%x:%x",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
for(int i = 1;i <= 8;i++){
if(a[i] == 0){
int j = i,sum = 0,maxn2 = maxn;
while(a[j] == 0){
sum++;
maxn2 = max(maxn2,sum);
j++;
}
if(maxn2 > maxn){
max_where = i;
maxn = maxn2;
}
}
}
if(maxn >= 8){
cout << "::" << endl;
return 0;
}
for(int i = 1;i <= 8;i++){
if(i != 1) cout << ":";
if(max_where == i && i == 1) cout << ":";
if(i == max_where){
cout << ":";
i += maxn;
}
printf("%x",a[i]);
}
return 0;
}
样例都过了,也测了极端数据,就挺无语的。。。