首页 > 其他分享 >P7911

P7911

时间:2024-10-09 19:47:04浏览次数:7  
标签:return int P7911 flag && 255 size

没切
这题恶心的点死多……
首先,你这数据不能一次性让我把bug改完吗?浪费lg评测资源,该罚
然后

进入正题

我踩的坑

  1. 两种机用同一个编号
  2. 中间会爆int,要在过程中就判掉
  3. 开头可能出现.这种毒瘤玩楞

然后比2023 csp-j T3 好写多了

#include<bits/stdc++.h>
using namespace std;
string s1="Server";
map<string,int> ma;
bool g(string s){
	int i=0,p=0;
	bool flag=0;
	if(s[i]<'0'||s[i]>'9')return 0;
	for(;i<s.size();i++){
		if(s[i]=='.')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]=='.')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]=='.')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]==':')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>65535)return 0;
	}
	return 1;
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	freopen("1.out","w",stdout);
	for(int i=1;i<=n;i++){
		string op,ad;
		cin>>op>>ad;
		if(op==s1){
			if(g(ad)){
				if(ma[ad]) cout<<"FAIL\n";
				else ma[ad]=i,cout<<"OK\n";
			}else cout<<"ERR\n";
		}else{
			if(g(ad)){
				if(ma[ad]) cout<<ma[ad]<<'\n';
				else cout<<"FAIL\n";
			}else cout<<"ERR\n";
		}
	}
}

标签:return,int,P7911,flag,&&,255,size
From: https://www.cnblogs.com/zan-mei-tai-yang/p/18455000

相关文章

  • CSP历年复赛题-P7911 [CSP-J 2021] 网络连接
    原题链接:https://www.luogu.com.cn/problem/P7911题意解读:服务器server建立连接,客户端client加入连接,建立和加入连接都要指定一个ip地址,对已经建立过连接的ip地址再次建立连接会失败,加入连接没有限制,根据要求进行输出。解题思路:此题有两个关键点:1、验证IP地址的格式是符合规范......
  • [Luogu] P7911 [CSP-J 2021] 网络连接
    [CSP-J2021]网络连接-洛谷距离CSP2023还有\(**3**\)天题意及思路恶臭大模拟,按照题意模拟即可。有几个代码上的难点:当定义了一个scanf或者sscanf并且有一定的输入规则,那么如果读取到的字符串不符合定义的规则,那读入了几个变量就返回几个变量例如,如下代码定义了一个读......
  • 洛谷 P7911 [CSP-J 2021] 网络连接 题解
    写在前面一道普及级别的题目。CSP-J全国统一命题2021年第三题。本题解来自于一位真正的大佬。传送门https://www.luogu.com.cn/blog/xyf007/solution-p7911。题面信息来源于洛谷。请访问https://www.luogu.com.cn/problem/P7911。声明:本题解非商业用途,一切侵权行为请联系作......
  • P7911 网络连接评论及c++题解
    P7911网络连接1.原题链接root2.评论下位黄的水平前置知识:sscanf()函数,sprintf()函数,map<>当然,不会sscanf()和sprintf()也有解法,详见解法13.解法解法1#inclu......
  • P7911 CSP J 2021 T3 纯模拟 无map 代码
    目录申明前置知识sscanf与sprintf应用字符串常用函数代码后记申明解释在注释里注释掉的不用管写错的代码可借鉴原题:洛谷P7911前置知识sscanf与sprintf/*sscanf......