65分,自己测试测试点结果能过,答案过不了
查看原帖
65分,自己测试测试点结果能过,答案过不了
390150
平等与晚钟楼主2022/10/25 19:09
#include<bits/stdc++.h>
using namespace std;
int sum=0;
int fuwuqi[1010][3];
int a,b,c,d,e;
char wz[5]={'.','.','.','.',':'};
bool shuru()
{
	string p;
	cin>>p;
	int fuhao=0;
	int n=p.length();
	if(p[n-1]=='.'||p[n-1]==':')
		return 0;
	for(int i=0;i<n;i++)
		if(p[i]=='.'||p[i]==':')
		{
			fuhao++;
			if(fuhao>4)
				return 0;
			if(wz[fuhao]!=p[i])
				return 0;
			if(i<n-1&&p[i]==p[i+1])
				return 0;
			if(p[i+1]=='0'&&p[i+2]=='0')
				return 0;
		}
	if(fuhao<4)
		return 0;
	int gyc[30]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
	int j=1;
	for(int i=0;i<n;i++)
	{
		if(p[i]=='.'||p[i]==':')
			i++,j++;
		if(i==n-1&&(p[i]=='.'||p[i]==':'))
			return 0;
		gyc[j]*=10;
		gyc[j]+=p[i]-'0';
	}
	a=gyc[1];
	b=gyc[2];
	c=gyc[3];
	d=gyc[4];
	e=gyc[5];
	return 1;
}
bool guifan(int a,int b,int c,int d,int e)
{
	if(a<=255&&b<=255&&c<=255&&d<=255&&e<=65535&&a>=0&&b>=0&&c>=0&&d>=0&&e>=0)
		return 1;
	return 0;
}
int sousuo(int n)
{
	for(int i=1;i<=sum;i++)
		if(fuwuqi[i][1]==n)
			return i;
	return 0;
}
int main()
{
//	freopen("a.in","r",stdin);
//	freopen("network.out","w",stdout);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string named;
		cin>>named;
		if(shuru()==0)
			cout<<"ERR"<<endl;
		else
		{
			int panduan=a*7+b*9+c*10+d*5+e*8+a*b+c*d+e*e+a+c+b*b+a*e+c*b+d;
			if(named=="Server")
			{
				if(!guifan(a,b,c,d,e))
					cout<<"ERR"<<endl;
				else if(!sousuo(panduan)>0)
				{
					sum++;
					fuwuqi[sum][1]=panduan;
					fuwuqi[sum][2]=i;
					cout<<"OK"<<endl;
				}	
				else
				{
					//cout<<sousuo(panduan)<<" "<<i<<" ";
					cout<<"FAIL"<<endl;
				}
			}
			else
			{
				int jg=sousuo(panduan);
				if(!guifan(a,b,c,d,e))
					cout<<"ERR"<<endl;
				else if(jg==0)
					cout<<"FAIL"<<endl;
				else
				{
					cout<<fuwuqi[jg][2]<<endl;
				}
			}
		}
	}
	return 0;
}
2022/10/25 19:09
加载中...