百度之星IP聚合(水题map&字符处理)
发布时间:2020-12-13 22:27:21 所属栏目:百科 来源:网络整理
导读:虽然题目停水的,但是好像字符处理运用的还比较合适 Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个网络地址。网络地址等于子
虽然题目停水的,但是好像字符处理运用的还比较合适
#include <iostream> #include <string> #include <cstdio> #include <map> using namespace std; string Getstr(string str){///规格化字符串(添加0) string temp,getstr=""; int itl=0,itf=str.find("."); for(int i=0; i<3; i++){ temp = str.substr(itl,itf-itl); temp.insert(0,3-temp.length(),'0'); getstr+=temp; itl=itf+1,itf=str.find(".",itf+1); } temp = str.substr(itl,str.length()-itl); temp.insert(0,'0'); getstr+=temp; return getstr; } int main (){ int t,xx=0; cin>>t; while(t--){ int m,n,coun=0; cin>>m>>n; string str,tab[1005]; for(int i=0; i<m; i++){ cin>>str; tab[coun++]=Getstr(str); } printf("Case #%d:n",++xx); for(int i=0; i<n; i++){ cin>>str; string temp = Getstr(str); map<long long,int > m; for(int j=0; j<coun; j++){ long long sum=0; for(int i=0; i<4; i++){ int aa=(tab[j][i*3]-'0')*100+(tab[j][i*3+1]-'0')*10+tab[j][i*3+2]-'0',bb=(temp[i*3]-'0')*100+(temp[i*3+1]-'0')*10+temp[i*3+2]-'0'; sum=sum*1000+(aa&bb); } m[sum]=0; } cout<<m.size()<<endl; } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |