首页 > 编程语言 >P7911 网络连接评论及c++题解

P7911 网络连接评论及c++题解

时间:2022-10-25 22:13:44浏览次数:79  
标签:sscanf ad int 题解 P7911 c++ num false 解法

P7911 网络连接

1.原题链接

root

2.评论

下位黄的水平
前置知识:sscanf()函数,sprintf()函数,map<>
当然,不会sscanf()和sprintf()也有解法,详见解法1

3.解法

解法1

#include<bits/stdc++.h>
using namespace std;
int n;
map<string,int> server;
bool check(string ad){
	int k1=0,k2=0,k3=0;
	long long num=0;
	for(int i=0;i<ad.size();i++){
		if((ad[i]>='0' && ad[i]<='9')&&(i==0 || ad[i-1]=='.' || ad[i-1]==':')) k3++;
		if(ad[i]=='.' || ad[i]==':'){
			if(ad[i]=='.') k1++;
			if(ad[i]==':') k2++;
			if(k1<3 && k2!=0) return false;
			if(k3==0) return false;         // 判断符号
			if(0<=num && num<=255){
				num=0;
				continue;
			}
			else{
				return false;
			}
		}
		else if(ad[i]<'0' && ad[i]>'9'){
			return false;                   //非数字
		}
		else if(i && !num && ad[i-1]=='0'){
			return false;                   //前置'0'
		}
		num=num*10+ad[i]-'0';
	}
	if(k1!=3 || k2!=1 || k3!=5){
		return false;
	}
	if(0<=num&& num<=65535){
		return true;
	}
	else{
		return false;
	}
}
int main(){                                             //主程序 没什么好说的
	cin>>n;
	string ad,op;
	for(int i=1;i<=n;i++){
		cin>>ad>>op;
		if(!check(op)){
			cout<<"ERR"<<endl;
			continue;
		}
		if(ad=="Server"){
			if(server[op]==0){
				server[op]=i;
				cout<<"OK"<<endl;
			}
			else{
				cout<<"FAIL"<<endl;
			}
		}
		else{
			if(server[op]>0) cout<<server[op]<<endl;
			else{
				cout<<"FAIL"<<endl;
			}
		}
	}
	return 0;
}

比较麻烦,sscanf()函数被调换成字符串的字符

解法2


标签:sscanf,ad,int,题解,P7911,c++,num,false,解法
From: https://www.cnblogs.com/Thetz/p/luogu-p7911.html

相关文章

  • 实验3 数组、指针与现代c++标准库
    实验任务5#include"Info.hpp"#include<iostream>#include<string>#include<vector>intmain(){strings1,s2="continue";inti=0,n=0;intcon......
  • C++ 面向对象高级开发 基础篇(二)
    操作符重载C2就是this传递者不用知道是否returnbyreference 非成员函数(全局函数)的操作符重载(有几种用法就写几种重载)不能使用returnbyreference因为他们得......
  • C++ STL库_vector
    1.vector的初始化方式vectora(10);定义10个整形元素的向量(每个元素的初值为0)vectora(10,1);定义10个整形元素的向量(每个元素的初值为1)vectora(b);用b向量创建a向量,整体......
  • C++服务器开发精髓 电子书 pdf
    作者:张远龙出版社:电子工业出版社 链接:C++服务器开发精髓  本书从操作系统原理角度讲解进行C++服务器开发所需掌握的技术栈。全书总计9章,第1~2章讲解C++11/14/......
  • C++ 面向对象高级开发 基础篇(一)
    C与C++的结构 C++举例   基本结构:   C与C++的输出    防御式声明   头文件声明   Class的声明 模板   访问......
  • arc138C 题解
    挺喜欢这道题,可惜大号已经红了,又不想要估值,只能用小号交。A与B在玩游戏,其中A先手。有\(n\)个数\(a_1-a_n\),A每次可以任意取一个数,B每次会取没有被取的数......
  • 2022ACM第二次招新题解
    A-签到题这道超级简单的题目没有任何输入。你只需要在一行中输出著名短句"helloworld"就可以了。代码&思路无思路记得完全一样就行,别整Helloworld/helloworl......
  • CYSYOI 2022 Round #1 赛后题解报告
    CYSYOI2022Round#1赛后题解报告我是个大聪明,一个200分的蒟蒻忍泪前来写题解和赛后报告。/kk赛后题解T1CHT去挖矿题目详情算法解析好的,一道大模拟。直接上代......
  • EasyCVR数据库优化:ehome设备表不能同步更新的问题解决
    EasyCVR视频融合云平台可支持多协议、多设备接入,包括国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK、Ehome等协议,同时也能分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视......
  • vscode调试C++代码,及makefile
      launch.json{//使用IntelliSense了解相关属性。//悬停以查看现有属性的描述。//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?......