啊啊啊,加上了前导0还是只有65pts
查看原帖
啊啊啊,加上了前导0还是只有65pts
610410
fenboQAQ楼主2023/7/8 22:21
#include <bits/stdc++.h>
using namespace std;
bool pd(string s)
{
	if(s == "") return true;
	if(s[0] == '.' || s[0] == ':') return true;
    bool flag = false;
    int a = 0;
    long long k = 0,d = 0,p,up = -1;
    for(long long i = 0;i < s.size();i ++)
    {
        if(s[i] == '.') 
        {
            if(a > 255)
            {
                flag = true;
                break;
            } 
            k ++,a = 0;
        }
        else if(s[i] == ':')
        {
            p = i + 1;
            if(a > 255)
            {
                flag = true;
                break;
            }
            d ++,a = 0;
            break;
        } 
        else 
		{
			a *= 10;
			a += s[i] - '0';
		}
    }  
    if(d != 1) return true;
    else if(k != 3) return true;
    else
    {
        a = 0;
        for(long long i = p;i < s.size();i ++)
        {
            a *= 10;
            a += s[i] - '0';
        }
        if(a >= 65535) return true;
        else return false;
    }
}
int main()
{
    long long n;
    cin >> n;
    string s[10005];
    for(long long i = 1;i <= n;i ++)
    {
        string ID,OP;
        cin >> ID >> OP;
        bool flag = false;
		for(int j = 0;j < OP.size();j ++){
			if((OP[j - 1] == '.' || OP[j - 1] == ':' || j == 0) && OP[j] == '0' && (OP[j + 1] != '.' && OP[j + 1] != ':')){
				cout << "ERR" << endl;
				flag = true;
				break;
			}
		}      
		if(flag) continue;
        if(ID == "Server")
        {
        	if(pd(OP))
            {
                cout << "ERR" << endl;
                continue;
            }
            bool flag = false;
            for(long long j = 1;j < i;j ++)
            {
                if(s[j] == OP)
                {
                     flag = true;
                     break;
                }
            }
            if(!flag)
            {
                cout << "OK" << endl;
                s[i] = OP;
            }
            else{
                cout << "FAIL" << endl;
            }
        }
        else{
            if(pd(OP))
            {
                cout << "ERR" << endl;
                continue;
            }
            bool flag = false;
            long long ans;
            for(long long j = 1;j < i;j ++)
            {
                if(s[j] == OP)
                {
                     flag = true,ans = j;
                     break;
                }
            }
            if(flag)
            {
                cout << ans << endl;
            }
            else{
                cout << "FAIL" << endl;
            }
        }
    }
    return 0;
}
2023/7/8 22:21
加载中...