65分求助
查看原帖
65分求助
1179906
hhy8399楼主2024/10/12 02:19
#include <bits/stdc++.h>
using namespace std;

int n;
string name,ip;
map<string,int > server;

bool is_ip(string s) {
	string a,b,c,d,e;
	int pos = 1,na = 0,nb = 0,nc = 0,nd = 0,ne = 0,j = 0;
	for(int i = 0;i < (int)s.size();i++) {
		if(pos <= 3 && s[i] == '.' ) {
			pos++;
			continue;
		}
		else if(pos <= 3 && s[i] == ':') {
			return false;
		}
		else if(pos == 4 && s[i] == ':'){
			pos++;
			continue;
		}
		else if(pos == 4 && s[i] == '.') {
			return false;
		}
		
		if(pos == 1) {
			a += s[i]; 
		}
		if(pos == 2) {
			b += s[i];
		}
		if(pos == 3) {
			c += s[i];
		}
		if(pos == 4) {
			d += s[i];
		}
		if(pos == 5) {
			e += s[i];
		}
	}
	if(a.size() > 1 && a[0] == '0' || b.size() > 1 && b[0] == '0' || c.size() > 1 && c[0] == '0' || d.size() > 1 && d[0] == '0' || e.size() > 1 && e[0] == '0'||a.size() == 0 || b.size() == 0 || c.size() == 0 || d.size() == 0 || e.size() == 0) {
		return false;
	} 
	for(int i = (int)a.size() - 1;i >= 0;i--,j++)
	{
		na += (a[i] - '0') * pow(10,j); 
	}
	j = 0;
	for(int i = (int)b.size() - 1;i >= 0;i--,j++)
	{
		nb += (b[i] - '0') * pow(10,j); 
	}
	j = 0;
	for(int i = (int)c.size() - 1;i >= 0;i--,j++)
	{
		nc += (c[i] - '0') * pow(10,j); 
	}
	j = 0;
	for(int i = (int)d.size() - 1;i >= 0;i--,j++)
	{
		nd += (d[i] - '0') * pow(10,j); 
	}
	j = 0;
	for(int i = (int)e.size() - 1;i >= 0;i--,j++)
	{
		ne += (e[i] - '0') * pow(10,j); 
	}
//	cout << na << "\n" << nb << "\n" << nc << "\n" << nd << "\n" << ne << "\n";
	return (na <= 255 && nb <= 255 && nc <= 255 && nd <= 255 && ne <= 65535 && pos == 5);
}

int main() {
	freopen("P7911_13.in","r",stdin);
	freopen("66.out","w",stdout);
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n;
	for(int i = 1;i <= n;i++) {
		cin >> name >> ip;
		if(name == "Server")
		{
			if(is_ip(ip)) {
				if(server[ip] != 0) {
					cout << "FAIL\n";
				}
				else {
					server[ip] = i;
					cout << "OK\n";
				}
			}
			else {
				cout << "ERR\n";
			}
		}
		else {
			if(is_ip(ip)) {
				if(server[ip] != 0) {
					cout << server[ip] << "\n";
				}
				else {
					cout << "FAIL\n";
				}
			}
			else {
				cout << "ERR\n";
			}
		}
	}
	return 0;
}
2024/10/12 02:19
加载中...