Hack数据
查看原帖
Hack数据
381949
Federico2903楼主2021/10/24 09:18

本人问下,这里面的数据是没有CCF考试时候给的4组数据吗,我这里有一份非AC代码,提交上来却AC了

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<sstream>
#include<map>

//I AK IOI !!!!!
//Accepted 100pts

using namespace std;

class fastio{
	public:
		inline int readInt(){
			int x=0;
			char t=getchar();
			while(t>='0'&&t<='9')x*=10,x+=t-'0',t=getchar();
			return x;
		}
		inline void readInt(int &num){
			int x=0;
			char t=getchar();
			while(t>='0'&&t<='9')x*=10,x+=t-'0',t=getchar();
			num=x;
		}
		inline long long int readLong(){
			long long int x=0;
			char t=getchar();
			while(t>='0'&&t<='9')x*=10,x+=t-'0';
			return x;
		}
		inline void readLong(long long int &num){
			long long int x=0;
			char t=getchar();
			while(t>='0'&&t<='9')x*=10,x+=t-'0',t=getchar();
			num=x;
		}
		inline string readString(){
			string str="";
			char t=getchar();
			while(t!=' '&&t!='\n')str+=t,t=getchar();
			return str;
		}
		inline void readString(string & s){
			string str="";
			char t=getchar();
			while(t!=' '&&t!='\n')str+=t,t=getchar();
			s=str;
		}
		inline void print(stringstream &t){
			string str=t.str();
			for(int i=0;i<str.length();i++){
				putchar(str[i]);
			}
		}
		inline void print(string &t){
			for(int i=0;i<t.length();i++){
				putchar(t[i]);
			}
		}
		inline void changeline(){
			putchar('\n');
		}
	private:
};

class server{
	public:
		server(){
			
		}
		server(int id){
			this->id=id;
		}
		int id;
	private:
};

map<string,server> servers;
fastio io;
string CLIENT="Client";
string SERVER="Server";
string OK="OK";
string FAIL="FAIL";
string ERR="ERR";

bool is_valid(string ad){
	int i=0;
	int cnt=0;
	string temp=ad;
	while(temp.find(':')!=string::npos)cnt++,temp.erase(temp.find(':'),1);
	if(cnt!=1)return 0;
	temp=ad;
	cnt=0;
	int pos=temp.find('.');
	while(pos!=string::npos){
		cnt++;
		temp.erase(pos,1);
		pos=temp.find('.');
	}
	if(cnt!=3)return 0;
	//cout << "prepare is valid!" << endl;
	while(ad[i-1]!=':'){
		int t=0;
		int c=0;
		bool flg=0;
		while(ad[i]!='.'){
			if((!flg)&&ad[i]=='0'&&(i+1<ad.length()&&ad[i+1]>='0'&&ad[i+1]<='9'))return 0;
			//cout << "该段没有前导0!" << endl;
			if(ad[i]==':'){
				break;
			}
			if(ad[i]<'0'||ad[i]>'9')return 0;
			//cout << "该段没有非数字!" << endl;
			flg=1;
			t=t*10+ad[i]-'0';
			i++;
			c++;
		}
		if(c==0)return 0;
		if(t>255)return 0;
		//cout << "段" << t <<"是合法的!" << endl;
		i++;
	}
	//cout << "address is valid!" << endl;
	int t=0;
	int c=0;
	bool flg=0;
	while(i<ad.length()){
		if((!flg)&&ad[i]=='0'&&(i+1<ad.length()&&ad[i+1]>='0'&&ad[i+1]<='9'))return 0;
		//cout << "该端口段没有前导0!" << endl;
		if(ad[i]<'0'||ad[i]>'9')return 0;
		//cout << "该端口段没有非数字!" << endl;
		flg=1;
		t=t*10+ad[i]-'0';
		i++;
		c++;
	}
	if(c==0)return 0;
	if(t>65535)return 0;
	return 1;
}

int main(){
	//freopen("network.in","r+",stdin);
	//freopen("network.out","w+",stdout);
	int n;
	io.readInt(n);
	for(int i=0;i<n;i++){
		string str1,str2;
		io.readString(str1);
		io.readString(str2);
		if(str1==CLIENT){
			if(is_valid(str2)){
				if(servers.count(str2)){
					stringstream ss;
					ss << servers[str2].id;
					io.print(ss);
					io.changeline();
				}
				else{
					io.print(FAIL);
					io.changeline();
				}
			}
			else{
				io.print(ERR);
				io.changeline();
			}
		}
		else{
			if(is_valid(str2)){
				if(servers.count(str2)){
					io.print(FAIL);
					io.changeline();
				}
				else{
					io.print(OK);
					server temp(i+1);
					servers[str2]=temp;
					io.changeline();
				}
			}
			else{
				io.print(ERR);
				io.changeline();
			}
		}
	}
	return 0;
}

非AC记录:http://s5.z100.vip:8813/record/6174b17c17a9d91844eaebe7

2021/10/24 09:18
加载中...