求助,具体思路参照第二篇题解
查看原帖
求助,具体思路参照第二篇题解
1054475
w_god楼主2023/10/19 13:37
#include<bits/stdc++.h>
using namespace std;
map<string , int>mp;
bool check(char p[])
{
	int a = -1 , b = -1 , c = -1 , d = -1 , e = -1;
	int n = sscanf(p , "%d.%d.%d.%d:%d" , &a , &b , &c , &d , &e);
	if(n != 5) return 0;
	if (a < 0 || a > 255) return 0;
	if (b < 0 || b > 255) return 0;
	if (c < 0 || c > 255) return 0;
	if (d < 0 || d > 255) return 0;
	if (e < 0 || e > 255) return 0;
	char pp[110];
	sprintf(pp , "%d.%d.%d.%d:%d" , a , b , c , d , e);
	if (strcmp(pp , p) == 0)
	{
		return 1;
	}
	return 0;
}
int main(void)
{
	int T;
	scanf("%d" , &T);
	for (int i = 1 ; i <= T ; i++)
	{
		char op[110] , s[110];
		scanf("%s%s" , op , s);
		string t(s);
		if (op[0] == 'S')
		{
			if (check(s) == 0)
			{
				printf("ERR\n");
				continue;
			}
			else
			{
				if (mp.count(t) != 0)
				{
					printf("FAIL\n");
					continue;
				}
				else
				{
					printf("OK\n");
					mp[t] = i; 
					continue;
				}
			}
		}
		else
		{
			if (check(s) == 1) printf("ERR\n");
			else if(mp.count(t) == 0) printf("FAIL\n");
			else printf("%d\n" , mp[t]);
		}
	}
	return 0;
}
2023/10/19 13:37
加载中...