65pts 求hack
查看原帖
65pts 求hack
528802
AC_notonlyAC楼主2024/10/17 19:35

讨论区的hack都过了 求调qwq

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,tot,num[6];
struct fwj
{
	ll a,b,c,d,e;
}f[100005];
int main()
{
	cin>>n;
	while(n--)
	{
		tot++;
		f[tot].a=f[tot].b=f[tot].c=f[tot].d=f[tot].e=-1;
		num[1]=num[2]=num[3]=num[4]=num[5]=-1;
		ll now=1;
		string s;
		cin>>s;
		string e;
		cin>>e;
		e="%"+e+"%";
		ll sum=0,flag=0;
		if(e[1]=='.'||e[1]==':'||(e[1]=='0'&&(e[2]>='0'&&e[2]<='9'))) flag=1,cout<<"ERR\n";
		for(ll i=1;i<e.size();i++)
		{
			if((i!=e.size()-1&&(e[i]<'0'||e[i]>'9')&&(e[i+1]<'0'||e[i+1]>'9'))||(e[i]=='0'&&(e[i+1]>='0'&&e[i+1]<='9')&&(e[i-1]=='.'||e[i-1]==':')))
			{
				cout<<"ERR\n";
				flag=1;
				break;
			} 
			else if(e[i]=='%')
			{
				num[5]=sum;
				now++;
				continue;
			}
			else if(e[i]==':')
			{
				if(now!=4) 
				{
					cout<<"ERR\n";
					flag=1;
					break;
				}
				else
				num[4]=sum,sum=0;
				now++;
				continue;
			}
			else if(e[i]=='.')
			{
				if(now==4) 
				{
					cout<<"ERR\n";
					flag=1;
					break;
				}
				else num[now++]=sum,sum=0;
				continue;
			}
			else if((e[i]<'0'||e[i]>'9')&&e[i]!='.'&&e[i]!=':'&&e[i]!='%')
			{
				cout<<"ERR\n";
				flag=1;
				break;
			} 
			sum*=10;
			sum=sum+e[i]-'0';
			if(sum>65535) 
			{
				flag=1;
				cout<<"ERR\n";
				break;
			}
		}
		if(now!=6&&!flag)
		{
			cout<<"ERR\n";
			flag=1;
		}
		//cout<<"\n";
		//for(ll i=1;i<=5;i++) cout<<num[i]<<" ";cout<<"\n";
		if(flag==1) continue;
		if(num[1]>255||num[2]>255||num[3]>255||num[4]>255||num[5]>65535) 
		{
			cout<<"ERR\n";
			continue;
		}
		
		if(s[0]=='S'&&s[1]=='e'&&s[2]=='r'&&s[3]=='v'&&s[4]=='e'&&s[5]=='r'&&s.size()==6)
		{
			bool flag=0;
			for(ll i=1;i<=tot;i++)
			{
				if(num[1]==f[i].a&&num[2]==f[i].b&&num[3]==f[i].c&&num[4]==f[i].d&&num[5]==f[i].e)
				{
					flag=1;
					cout<<"FAIL\n";
				}
			}
			if(!flag)
			{
				cout<<"OK\n";
				f[tot].a=num[1];
				f[tot].b=num[2];
				f[tot].c=num[3];
				f[tot].d=num[4];
				f[tot].e=num[5];
			}
		}
		else if(s[0]=='C'&&s[1]=='l'&&s[2]=='i'&&s[3]=='e'&&s[4]=='n'&&s[5]=='t'&&s.size()==6)
		{
			bool flag=0;
			for(ll i=1;i<=tot;i++)
			{
				if(num[1]==f[i].a&&num[2]==f[i].b&&num[3]==f[i].c&&num[4]==f[i].d&&num[5]==f[i].e)
				{
					flag=1;
					cout<<i<<"\n";
				}
			}
			if(!flag)
			{
				cout<<"FAIL\n";
			}
		}
		else cout<<"ERR\n";
		//cout<<tot<<" ";
	}
}
2024/10/17 19:35
加载中...