题目链接:点击打开链接
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
模拟题。实现代码如下:
#include <cstdio> #include <iostream> #include <cstring> #include <map> using namespace std; int main() { int n,m,t,T=1; int ip[1010][4],add[1010][4]; int web[55][4]; char sip[20],sweb[20]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { scanf("%s",sip); int len=strlen(sip); int cnt=0; for(int j=0;j<len;j++) { int tmp=0; while(sip[j]!='.'&&j<len) tmp=tmp*10+sip[j++]-'0'; ip[i][cnt++]=tmp; } //printf("%d.%d.%d.%d",ip[i][0],ip[i][1],ip[i][2],ip[i][3]); } for(int i=0;i<m;i++) { scanf("%s",sweb); int len=strlen(sweb); int cnt=0; for(int j=0;j<len;j++) { int tmp=0; while(sweb[j]!='.'&&j<len) tmp=tmp*10+sweb[j++]-'0'; web[i][cnt++]=tmp; } //printf("%d.%d.%d.%d",web[i][0],web[i][1],web[i][2],web[i][3]); } printf("Case #%d:\n",T++); for(int i=0;i<m;i++) { int ans=0; for(int q=0;q<n;q++) { for(int j=0;j<4;j++) add[q][j]=ip[q][j]&web[i][j]; bool flag=true; for(int k=0;k<q;k++) if(add[q][0]==add[k][0]&&add[q][1]==add[k][1]&&add[q][2]==add[k][2]&&add[q][3]==add[k][3]) { flag=false; break; } if(flag) ans++; } printf("%d\n",ans); } } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。