听取WA声一片,求大佬指点
查看原帖
听取WA声一片,求大佬指点
1010143
Liyixun0518楼主2023/9/17 18:58

代码:

#include <bits/stdc++.h>
using namespace std;

unordered_map<string, int> ha;

char op[9];

string ip;

inline bool valid(string &ip) {
	long long a = 0, b = 0, c = 0, d = 0, e = 0, len = ip.length(), c1 = 0, c2 = 0; 
	if (ip[0] < '0' || ip[0] > '9') {
		return false;
	}
	if (ip[0] == '0' && ip[1] >= '0' && ip[1] <= '9') {
		return false;
	}
	if (ip[len - 1] < '0' || ip[len - 1] > '9') {
		return false;
	}
	for (int i = 0; i < len; i++) {
		if (ip[i] >= '0' && ip[i] <= '9') {
			if (c1 < 3 && c2) {
				return false;
			}
			if (c1 == 0) {
				a *= 10;
				a += ip[i] - '0';
			} else if (c1 == 1) {
				b *= 10;
				b += ip[i] - '0';
			} else if (c1 == 2) {
				c *= 10;
				c += ip[i] - '0';
			} else if (c1 == 3) {
				if (c2 == 0) {
					d *= 10;
					d += ip[i] - '0';
				} else if (c2 == 1) {
					e *= 10;
					e += ip[i] - '0';
				} else {
					return false;
				}
			} else {
				return false;
			}
		} else if (ip[i] == '.') {
			c1++;
			if (ip[i + 1] < '0' || ip[i + 1] > '9') {
				return false;
			}
			if (i < len - 2 && ip[i + 1] == '0' && ip[i + 2] >= '0' && ip[i + 2] <= '9') {
				return false;
			}
		} else if (ip[i] == ':') {
			c2++;
			if (ip[i + 1] < '0' || ip[i + 1] > '9') {
				return false;
			}
			if (i < len - 2 && ip[i + 1] == '0' && ip[i + 2] >= '0' && ip[i + 2] <= '9') {
				return false;
			}
		} else {
			return false;
		}
	}
	return a >= 0 && a <= 255 && b >= 0 && b <= 255 && c >= 0 && c <= 255 && d >= 0 && d <= 255 && e >= 0 && e <= 65535 && c1 == 3 && c2 == 1;
}

int n;

int main() {
	freopen("network.in", "r", stdin);
	freopen("network.out", "w", stdout);
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%s", op);
		cin >> ip;
		if (!valid(ip)) {
			puts("ERR");
			continue;
		}
		if (op[0] == 'S') {
			if (!ha.count(ip)) {
				ha[ip] = i;
				puts("OK");
			} else {
				puts("FAIL");
			}
		} else {
			if (ha.count(ip)) {
				printf("%d\n", ha[ip]);
			} else {
				puts("FAIL");
			}
		}
	}
	return 0;
}

2023/9/17 18:58
加载中...