社区讨论

普及第三道挂了,SH还能一等吗

灌水区参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lobfo5q6
此快照首次捕获于
2023/10/29 20:14
2 年前
此快照最后确认于
2023/11/04 01:44
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
struct p
{
	int a,b,c,d,e,id;
} cl[10010],se[10010];
char ch[2000],x[5000],y[5000],z[5000],u[5000],v[5000],w[5000];
int n;
int sum1=0,sum2=0;
bool isd(char x)
{
	return x>='0'&&x<='9';
}
int d(bool qw,int aq)
{
	int q=strlen(x);
	int p=0;
	memset(y,0,sizeof(y));
	memset(z,0,sizeof(z));
	memset(u,0,sizeof(z));
	memset(v,0,sizeof(v));
	memset(w,0,sizeof(w));
	int leny=0,lenz=0,lenu=0,lenv=0,lenw=0;
	for(int i=0;i<q;i++)
	{
		if(x[i]=='.')
		{
			p=i+1;
			break;
		}
		y[leny++]=x[i];
		if(i==q-1) p=q+1;
	}
	for(int i=p;i<q;i++)
	{
		if(x[i]=='.')
		{
			p=i+1;
			break;
		}
		z[lenz++]=x[i];
		if(i==q-1) p=q+1;
	}
	for(int i=p;i<q;i++)
	{
		if(x[i]=='.')
		{
			p=i+1;
			break;
		}
		u[lenu++]=x[i];
		if(i==q-1) p=q+1;
	}
	for(int i=p;i<q;i++)
	{
		if(x[i]==':')
		{
			p=i+1;
			break;
		}
		v[lenv++]=x[i];
		if(i==q-1) p=q+1;
	}
	for(int i=p;i<q;i++)
	{
		w[lenw++]=x[i];
		if(i==q-1) p=q+1;
	}
	if(aq==26)
	{
		//cout<<y<<" q "<<z<<" "<<u<<" "<<v<<" "<<w<<endl;
	}
	//cout<<y<<" "<<z<<" "<<u<<" "<<v<<" "<<w<<endl;
	if(strlen(y)>3||strlen(y)==0||strlen(z)>3||strlen(z)==0||strlen(u)>3||strlen(u)==0||strlen(v)>3||strlen(v)==0||strlen(w)>5||strlen(w)==0) return -1;
	//cout<<"qwqw"<<endl;
	for(int i=0;i<strlen(y);i++)
	{
		if(!isd(y[i])) return -1;
	}
	for(int i=0;i<strlen(z);i++)
	{
		if(!isd(z[i])) return -1;
	}
	for(int i=0;i<strlen(u);i++)
	{
		if(!isd(u[i])) return -1;
	}
	for(int i=0;i<strlen(v);i++)
	{
		if(!isd(v[i])) return -1;
	}
	for(int i=0;i<strlen(w);i++)
	{
		if(!isd(w[i])) return -1;
	}
	if(y[0]=='0'&&strlen(y)!=1) return -1;
	if(z[0]=='0'&&strlen(z)!=1) return -1;
	if(u[0]=='0'&&strlen(u)!=1) return -1;
	if(v[0]=='0'&&strlen(v)!=1) return -1;
	if(w[0]=='0'&&strlen(w)!=1) return -1;
	int a=0,b=0,c=0,d=0,e=0;
	for(int i=0;i<strlen(y);i++)
	{
		a=a*10+y[i]-'0';
	}
	for(int i=0;i<strlen(z);i++)
	{
		b=b*10+z[i]-'0';
	}
	for(int i=0;i<strlen(u);i++)
	{
		c=c*10+u[i]-'0';
	}
	for(int i=0;i<strlen(v);i++)
	{
		d=d*10+v[i]-'0';
	}
	for(int i=0;i<strlen(w);i++)
	{
		e=e*10+w[i]-'0';
	}
	if(!(a<=255&&b<=255&&c<=255&&d<=255&&e<=65535)) return -1;
	if(qw==0)
	{
		for(int i=1;i<=sum1;i++)
		{
			if(se[i].a==a&&se[i].b==b&&se[i].c==c&&se[i].d==d&&se[i].e==e) return se[i].id;
		}
		return -2;
	}
	else
	{
		for(int i=1;i<=sum1;i++)
		{
			if(se[i].a==a&&se[i].b==b&&se[i].c==c&&se[i].d==d&&se[i].e==e) return 1;
		}
		se[++sum1].a=a;
		se[sum1].b=b;
		se[sum1].c=c;
		se[sum1].d=d;
		se[sum1].e=e;
		se[sum1].id=aq;
		return 0;
	}
	
}
int main()
{
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		bool c=0;
		scanf("%s",x);
		if(x[0]=='S')
		{
			c=1;
			scanf("%s",x);
			int as=d(c,i);
			if(as==-1) printf("ERR\n");
			else if(as==1) printf("FAIL\n");
			else printf("OK\n");
		}
		else
		{
			scanf("%s",x);
			int as=d(c,i);
			if(as==-1) printf("ERR\n");
			else if(as==-2) printf("FAIL\n");
			else printf("%d\n",as);
		}
	}
}
144行的return 0 没写,re炸了
100-->0
336-->236
SH一等悬了

回复

8 条回复,欢迎继续交流。

正在加载回复...