70分求hack/开放数据下载
查看原帖
70分求hack/开放数据下载
229373
Xeqwq楼主2022/3/6 21:44

1.这道题的数据没法下载
2.我通过了所有的样例最后得了70分,三个WA求hack

#include <iostream>
#include <string>
using namespace std;
string IPv6;
string p[8];
string suo(string s)
{
	if(s=="0000") return "0";
	if(s[0]!='0') return s;
	string ss="";
	if(s[0]=='0'&&s[1]!='0') return ss=ss+s[1]+s[2]+s[3];
	if(s[1]=='0'&&s[2]!='0') return ss=ss+s[2]+s[3];
	if(s[2]=='0'&&s[3]!='0') return ss=ss+s[3];
}
int main()
{
	cin>>IPv6;
	for(int i=0;i<39;i++)
	{
		if(IPv6[i]==':') continue;
		p[(i+1)/5]+=IPv6[i];
	}
	for(int i=0;i<8;i++) p[i]=suo(p[i]);
	int nowf=-1,nowl=0,lonf=-1,lonl=0;
	for(int i=0;i<8;i++)
	{
		if(p[i]!="0")
		{
			if(lonl<nowl)
			{
				lonl=nowl;
				lonf=nowf;
			}
			nowl=0;
			nowf=-1;
		}
		else
		{
			if(nowf==-1) nowf=i;
			nowl++;
		}
	}
	if(lonl<nowl)
	{
		lonl=nowl;
		lonf=nowf;
	}
	int l=lonf,r=lonf+lonl-1;
	if(!lonl)
	{
		cout<<IPv6;
		return 0;
	}
	for(int i=0;i<8;i++)
	{
		if(i<l||i>r) cout<<p[i];
		if(i==7) continue;
		if(i==l-1||i==l)
		{
			cout<<"::";
			i=r;
			continue;
		}
		cout<<":";
	}
	return 0;
}
2022/3/6 21:44
加载中...