求助,WA 6一个点
查看原帖
求助,WA 6一个点
339440
CarryQwQ楼主2021/10/23 22:58

这是赛时代码,就是不知道哪错了?

哪位好心人帮我康一康。

#include <bits/stdc++.h>
using namespace std;
int n;
string opt, check_str = "...:", str;
map<string, int> mp;
int check(string s) {
	int cnt = 0;
	int len = s.size();
	if (!(s[len - 2] >= '0' && s[len - 2] <= '9')) {
		return 0;
	}
	for (int i = 0; i < len; i++) {
		if (s[i] == ':' || s[i] == '.') {
			if (s[i] != check_str[cnt])
				return 0;
			if (s[i] == check_str[cnt] && !(s[i - 1] >= '0' && s[i - 1] <= '9'))
				return 0;
			else cnt++;
		}
	}
	for (int i = 0; i < len; i++) {
		if (s[i] == '0' && (s[i + 1] >= '0' && s[i + 1] <= '9') && (s[i - 1] == '.' || s[i - 1] == ':' || i == 0)) {
			return 0;
		}
	}
	int ans, numd = 0;
	for (int i = 0; i < len; i++) {
		if (s[i] >= '0' && s[i] <= '9') {
			numd++;
			ans = 0;
			int k = i;
			while(s[k] >= '0' && s[k] <= '9') {
				ans = ans * 10 + (s[k] - '0');
				k++;
			}
			if (numd >= 1 && numd <= 4) {
				if (ans > 255) return 0;
			} else if (numd == 5) {
				if (ans > 65535) return 0;
			}
			i = k - 1;
		}
	}
	return 1;
}
int main() {
/*	freopen("network.in", "r", stdin);
	freopen("network.out", "w", stdout);*/
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> opt;
		if (opt == "Server") {
			cin >> str;
			if (!check(str)) {
				cout << "ERR\n";
			} else if (mp[str]) {
				cout << "FAIL\n";
			} else {
				mp[str] = i;
				cout << "OK\n";
			}
		} else if (opt == "Client") {
			cin >> str;
			if (!check(str)) {
				cout << "ERR\n";
			} else if (mp[str]) {
				cout << mp[str] << endl;
			} else cout << "FAIL\n";
		}
	}
	return 0;
}
2021/10/23 22:58
加载中...