社区讨论
75分求调
P7911[CSP-J 2021] 网络连接参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mhjaqcph
- 此快照首次捕获于
- 2025/11/03 23:29 4 个月前
- 此快照最后确认于
- 2025/11/03 23:29 4 个月前
猎奇代码
CPP#include<bits/stdc++.h>
using namespace std;
long long n,s[1005];
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
string op,ad;
cin>>op>>ad;
int len=ad.size();
if(op=="Server"){
long long a=0,b=0,c=0,d=0,e=0,la=0,ra=0,lb=0,rb=0,lc=0,rc=0,ld=0,rd=0,le=0,re=0,sum=1,ans,dian=0,mao=0;
bool f=false;
for(int j=0;j<len;j++){
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
if(dian!=3||mao!=1){
printf("ERR\n");
continue;
}
dian=0;
mao=0;
for(int j=0;j<len;j++){
if(sum==1&&ad[j]=='.'){
sum++;
ra=j-1;
lb=j+1;
}
else if(sum==2&&ad[j]=='.'){
sum++;
rb=j-1;
lc=j+1;
}
else if(sum==3&&ad[j]=='.'){
sum++;
rc=j-1;
ld=j+1;
}
else if(sum==4&&ad[j]==':'){
rd=j-1;
le=j+1;
break;
}
}
if(sum!=4){
printf("ERR\n");
continue;
}
re=len-1;
if((ad[la]=='0'&&la!=ra)||(ad[lb]=='0'&&lb!=rb)||(ad[lc]=='0'&&lc!=rc)||(ad[ld]=='0'&&ld!=rd)||(ad[le]=='0'&&le!=re)){
printf("ERR\n");
continue;
}
for(int j=ra;j>=la;j--){
a+=(ad[j]-'0')*pow(10,ra-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=rb;j>=lb;j--){
b+=(ad[j]-'0')*pow(10,rb-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=rc;j>=lc;j--){
c+=(ad[j]-'0')*pow(10,rc-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=rd;j>=ld;j--){
d+=(ad[j]-'0')*pow(10,rd-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=re;j>=le;j--){
e+=(ad[j]-'0')*pow(10,re-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
if(dian>0||mao>0){
printf("ERR\n");
continue;
}
if(a>255||b>255||c>255||d>255||e>65535){
printf("ERR\n");
continue;
}
ans=e+d*100000+c*100000000+b*100000000000+a*100000000000000;
for(long long j=1;j<=n;j++){
if(s[j]==ans){
printf("FAIL\n");
f=true;
break;
}
}
if(f)continue;
s[i]=ans;
printf("OK\n");
}
else if(op=="Client"){
long long a=0,b=0,c=0,d=0,e=0,la=0,ra=0,lb=0,rb=0,lc=0,rc=0,ld=0,rd=0,le=0,re=0,sum=1,ans,dian=0,mao=0;
bool f=false;
for(int j=0;j<len;j++){
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
if(dian!=3||mao!=1){
printf("ERR\n");
continue;
}
dian=0;
mao=0;
for(int j=0;j<len;j++){
if(sum==1&&ad[j]=='.'){
sum++;
ra=j-1;
lb=j+1;
}
else if(sum==2&&ad[j]=='.'){
sum++;
rb=j-1;
lc=j+1;
}
else if(sum==3&&ad[j]=='.'){
sum++;
rc=j-1;
ld=j+1;
}
else if(sum==4&&ad[j]==':'){
rd=j-1;
le=j+1;
break;
}
}
re=len-1;
if(sum!=4){
printf("ERR\n");
continue;
}
if((ad[la]=='0'&&la!=ra)||(ad[lb]=='0'&&lb!=rb)||(ad[lc]=='0'&&lc!=rc)||(ad[ld]=='0'&&ld!=rd)||(ad[le]=='0'&&le!=re)){
printf("ERR\n");
continue;
}
for(int j=ra;j>=la;j--){
a+=(ad[j]-'0')*pow(10,ra-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=rb;j>=lb;j--){
b+=(ad[j]-'0')*pow(10,rb-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=rc;j>=lc;j--){
c+=(ad[j]-'0')*pow(10,rc-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=rd;j>=ld;j--){
d+=(ad[j]-'0')*pow(10,rd-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
for(int j=re;j>=le;j--){
e+=(ad[j]-'0')*pow(10,re-j);
if(ad[j]=='.')dian++;
if(ad[j]==':')mao++;
}
if(dian>0||mao>0){
printf("ERR\n");
continue;
}
if(a>255||b>255||c>255||d>255||e>65535){
printf("ERR\n");
continue;
}
ans=e+d*100000+c*100000000+b*100000000000+a*100000000000000;
for(long long j=1;j<=n;j++){
if(s[j]==ans){
printf("%lld\n",j);
f=true;
continue;
}
}
if(f)continue;
printf("FAIL\n");
}
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...