90求助,明明官方数据自己测试都过了
查看原帖
90求助,明明官方数据自己测试都过了
541553
wangshi楼主2021/11/19 21:28
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<map> 
using namespace std;
map<string,int> q;
bool pd(string n);
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		char m;
		cin>>m;
		if(m=='S')
		{
			scanf("erver ");
			string s;
			cin>>s;
			if(pd(s))
			{
				if(q[s]==0)
				{
					q[s]=i;
					cout<<"OK"<<endl;
				}
				else
				{
					cout<<"FAIL"<<endl;
				}
			}
		}
		else
		{
			scanf("lient ");
			string s;
			cin>>s;
			if(pd(s))
			{
				if(q[s]!=0)
				{
					cout<<q[s]<<endl;
				}
				else
				{
					cout<<"FAIL"<<endl;
				}
			}
		}
	}
	return 0;
}
bool pd(string n)
{
	int s=1,num=0,f1=0,f2=0;
	bool f=false;
	if(n[0]=='.'||n[0]==':'||n[n.size()-1]=='.'||n[n.size()-1]==':')
	{
		cout<<"ERR"<<endl;
		return false;		
	}
	for(int i=0;i<n.size();i++)
	{
		if(n[i]=='0'&&!f)
		{
			f1++;
		}
		else
		{
			f=true;
			if(f1>=1)
			{
				if(n[i]<='9'&&n[i]>='0')
				{
					cout<<"ERR"<<endl;
					return false;					
				}
				else
				{
					if(f1>=2)
					{
						cout<<"ERR"<<endl;
						return false;						
					}
				}
			}
		}
		if(n[i]>='0'&&n[i]<='9')
		{
			num*=10;
			num+=n[i]-'0';
		}
		else
		{
			if(n[i]=='.')
			{
				if(f2==3||n[i+1]=='.'||n[i+1]==':'||i==0)
				{
					cout<<"ERR"<<endl;
					return false;
				}
				else
				{
					if(num<0||num>255)
					{
						cout<<"ERR"<<endl;
						return false;
					}
					else
					{
						f=false;
						f1=0;
						f2++;
						num=0;
					}
				}
			}
			else
			{
				if(num<0||num>255||i==n.size()-1)
				{
					cout<<"ERR"<<endl;
					return false;
				}
				f=false;
				f1=0;
				num=0;
				if(f2!=3)
				{
					cout<<"ERR"<<endl;
					return false;
				}
				else
				{
					f2++;
					for(int j=i+1;j<n.size();j++)
					{
						if(n[j]>'9'||n[j]<'0')
						{
							cout<<"ERR"<<endl;
							return false;						
						}
						if(n[j]=='0'&&!f)
						{
							f1++;
						}
						else
						{
							f=true;
							if(f1>=1)
							{
								cout<<"ERR"<<endl;
								return false;
							}						
						} 
						num*=10;
						num+=n[j]-'0';
						if(num>65535)
						{
							cout<<"ERR"<<endl;
							return false;							
						}	
					}	
				}
				break;		
			}
		}
	}
	if(f2<=3||f2>4)
	{
		cout<<"ERR"<<endl;
		return false;		
	}
	return true;
}

2021/11/19 21:28
加载中...