社区讨论
75分求助,WA on T13,14,19,20,21(悬赏关注)
P7911[CSP-J 2021] 网络连接参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo7wssne
- 此快照首次捕获于
- 2023/10/27 09:02 2 年前
- 此快照最后确认于
- 2023/10/27 09:02 2 年前
RT,已经调了1h了……,代码如下:
CPP#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#define MAX 10
using namespace std;
map<string,int> g;
string op,ad;
int tmp,n;
inline bool check()
{
string x=ad;
int l=x.length();
int a[MAX]={0},first[MAX]={0},flag=0,k=0;
int sum=0,sum1=0,sum2=0;
while(k<=l)
{
if(x[k]=='.'||x[k]==':'||x[k]=='\n'||x[k]=='\0')
{
if(x[k]=='.')
{
sum1++;
if(sum2!=0) return false;
}
if(x[k]==':')
{
sum2++;
if(sum1!=3) return false;
}
a[++flag]=sum,sum=0;
}
else
{
if(!sum&&x[k]=='0'&&x[k+1]!='.'&&x[k+1]!=':'&&k+1<l) return false;
sum=sum*10+x[k]-'0';
}
++k;
}
if(sum1!=3||sum2!=1||flag!=5) return false;
for(register int i=1; i<=4; i++)
if(a[i]<0||a[i]>255) return false;
if(a[5]<0||a[5]>65535) return false;
return true;
}
int main()
{
scanf("%d",&n);
for(register int i=1; i<=n; i++)
{
cin>>op>>ad;
tmp++;
if(!check())
{
printf("ERR\n");
continue;
}
if(op[0]=='S')
{
if(!g[ad])
{
g[ad]=tmp;
printf("OK\n");
}
else printf("FAIL\n");
}
if(op[0]=='C')
{
if(g[ad]) printf("%d\n",g[ad]);
else printf("FAIL\n");
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...