题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
http://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a,b,c;
while(cin>>a>>b>>c)
{
int d=0,w=0;
h:
if(w==1)
{
continue;
}
if(a[0]!='2')
{
cout<<'1'<<endl;
w=1;
goto h;
}
string s=a,sss;
while(s.size())
{
int t=0,tt=0;
for(int i=0;i<s.length();i++)
{
if(s[i]=='.')
{
tt++;
for(int j=0;j<i;j++)
{
t=t*10+s[j]-'0';
}
if(t>255||t<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
string ss;
ss.clear();
if(t==0)
{
ss='0';
}
while(t)
{
ss+=t%2+'0';
t=t/2;
}
reverse(ss.begin(), ss.end());
sss+=ss;
s=s.substr(i+1,s.length());
i=-1;
}
}
if(tt==3)
{
int t=0;
for(int j=0;j<s.length();j++)
{
t=t*10+s[j]-'0';
}
string ss;
ss.clear();
if(t>255||t<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
if(t==0)
{
ss='0';
}
while(t)
{
ss+=t%2+'0';
t=t/2;
}
reverse(ss.begin(), ss.end());
sss+=ss;
s="";
}
}
for(int i=0;i<sss.length();i++)
{
if(sss[i]=='0'&&sss[i+1]=='1')
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
int e=0;
for(int i=0;i<b.length();i++)
{
if(b[i]=='.'&&e==0)
{
int g=0;
e=1;
for(int j=0;j<i;j++)
{
g=g*10+b[j]-'0';
}
if(g>255||g<0)
{
cout<<'1';
w=1;
goto h;
}
}
else if(b[i]=='.'&&e==1)
{
e++;
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(b[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+b[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
else if(b[i]=='.'&&e==2)
{
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(b[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+b[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
int n=0;
for(int j=i+1;j<b.length();j++)
{
n=n*10+b[j]-'0';
}
if(n>255||n<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
}
int u=0;
for(int i=0;i<c.length();i++)
{
if(c[i]=='.'&&u==0)
{
int g=0;
u=1;
for(int j=0;j<i;j++)
{
g=g*10+c[j]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
else if(c[i]=='.'&&u==1)
{
u++;
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(c[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+c[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
else if(c[i]=='.'&&u==2)
{
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(c[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+c[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
int n=0;
for(int j=i+1;j<c.length();j++)
{
n=n*10+c[j]-'0';
}
if(n>255||n<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
}
int l=0;
for(int i=0;i<a.length();i++)
{
if(a[i]=='.')
{
l++;
}
if(a[i+1]=='0'&&a[i-1]=='5')
{
break;
}
}
for(int i=0;i<min(b.length(),c.length());i++)
{
if(b[i]=='.'&&l!=1)
{
l--;
}
else if(b[i]=='.'&&l==1)
{
for(int j=0;j<i;j++)
{
if(b[j]!=c[j])
{
cout<<'2'<<endl;
w=1;
goto h;
}
else if(b[j]==c[j]&&j==i-1)
{
cout<<'0'<<endl;
w=1;
goto h;
}
}
}
}
}
return(0);
}
#include<algorithm>
using namespace std;
int main()
{
string a,b,c;
while(cin>>a>>b>>c)
{
int d=0,w=0;
h:
if(w==1)
{
continue;
}
if(a[0]!='2')
{
cout<<'1'<<endl;
w=1;
goto h;
}
string s=a,sss;
while(s.size())
{
int t=0,tt=0;
for(int i=0;i<s.length();i++)
{
if(s[i]=='.')
{
tt++;
for(int j=0;j<i;j++)
{
t=t*10+s[j]-'0';
}
if(t>255||t<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
string ss;
ss.clear();
if(t==0)
{
ss='0';
}
while(t)
{
ss+=t%2+'0';
t=t/2;
}
reverse(ss.begin(), ss.end());
sss+=ss;
s=s.substr(i+1,s.length());
i=-1;
}
}
if(tt==3)
{
int t=0;
for(int j=0;j<s.length();j++)
{
t=t*10+s[j]-'0';
}
string ss;
ss.clear();
if(t>255||t<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
if(t==0)
{
ss='0';
}
while(t)
{
ss+=t%2+'0';
t=t/2;
}
reverse(ss.begin(), ss.end());
sss+=ss;
s="";
}
}
for(int i=0;i<sss.length();i++)
{
if(sss[i]=='0'&&sss[i+1]=='1')
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
int e=0;
for(int i=0;i<b.length();i++)
{
if(b[i]=='.'&&e==0)
{
int g=0;
e=1;
for(int j=0;j<i;j++)
{
g=g*10+b[j]-'0';
}
if(g>255||g<0)
{
cout<<'1';
w=1;
goto h;
}
}
else if(b[i]=='.'&&e==1)
{
e++;
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(b[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+b[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
else if(b[i]=='.'&&e==2)
{
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(b[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+b[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
int n=0;
for(int j=i+1;j<b.length();j++)
{
n=n*10+b[j]-'0';
}
if(n>255||n<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
}
int u=0;
for(int i=0;i<c.length();i++)
{
if(c[i]=='.'&&u==0)
{
int g=0;
u=1;
for(int j=0;j<i;j++)
{
g=g*10+c[j]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
else if(c[i]=='.'&&u==1)
{
u++;
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(c[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+c[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
else if(c[i]=='.'&&u==2)
{
int k,g=0;
for(int j=i-1;j>0;j--)
{
if(c[j]=='.')
{
k=j;
break;
}
}
for(int m=k+1;m<i;m++)
{
g=g*10+c[m]-'0';
}
if(g>255||g<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
int n=0;
for(int j=i+1;j<c.length();j++)
{
n=n*10+c[j]-'0';
}
if(n>255||n<0)
{
cout<<'1'<<endl;
w=1;
goto h;
}
}
}
int l=0;
for(int i=0;i<a.length();i++)
{
if(a[i]=='.')
{
l++;
}
if(a[i+1]=='0'&&a[i-1]=='5')
{
break;
}
}
for(int i=0;i<min(b.length(),c.length());i++)
{
if(b[i]=='.'&&l!=1)
{
l--;
}
else if(b[i]=='.'&&l==1)
{
for(int j=0;j<i;j++)
{
if(b[j]!=c[j])
{
cout<<'2'<<endl;
w=1;
goto h;
}
else if(b[j]==c[j]&&j==i-1)
{
cout<<'0'<<endl;
w=1;
goto h;
}
}
}
}
}
return(0);
}