社区讨论
65pts玄关求调必关,码风良好,有注释
P7911[CSP-J 2021] 网络连接参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhj1lqlc
- 此快照首次捕获于
- 2025/11/03 19:14 4 个月前
- 此快照最后确认于
- 2025/11/03 19:14 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
string ip[N]; //存地址
bool j(string s){//判断是否规范
int cnt=0,size=0,cnt2=0;
bool flag=0;//是否有前导0
for(int i=7;i<s.length();i++){
if((s[i]!='.')&&(s[i]!=':')){
if(!flag&&s[i]==0){//有前导0
// cout<<i<<endl;
return 0;
}else{
flag=1;
}
cnt++;
size=size*10+s[i]-'0';
if(size>255||cnt>3){//是否超出限制
// cout<<i<<endl;
return 0;
}
}else if(s[i]=='.'){
cnt2++;
cnt=0;
size=0;
flag=0;
}else if(s[i]==':'){
if(cnt2!=3) return 0;
size=0;
if(s[i+1]=='0'){
// cout<<i<<endl;
return 0;
}
int size2=0;
if(s.length()-i>6) {
// cout<<i<<endl;
return 0;
}
for(int j=i+1;j<s.length();j++){
if(s[j]==':') return 0;
size=size*10+s[j]-'0';
if(size>65535) return 0;
}
return 1;
}
}
}
int main(){
int n;
cin>>n;
for(int i=0;i<=n;i++){
string s;
getline(cin,s);
bool ok=j(s);
if(ok==0) {
if(i==0) continue;
cout<<"ERR"<<endl;
continue;
}
bool is=s[0]=='S'?1:0;
string ipp="";
for(int j=7;j<s.length();j++){
ipp+=s[j];
}
if(is){
bool success=1;
for(int j=1;j<=n;j++){
if(ip[j]==ipp){
cout<<"FAIL"<<endl;
success=0;
break;
}
}
if(success){//新地址
ip[i]=ipp;
cout<<"OK"<<endl;
}
} else{
bool success=0;
for(int j=1;j<=n;j++){
if(ip[j]==ipp){
cout<<j<<endl;
success=1;
break;
}
}
if(!success){
cout<<"FAIL"<<endl;
}
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...