题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
def check_ip(s):
l = s.split('.')
if len(l) != 4:
return False
for i in l:
if int(i)<0 or int(i)>255:
return False
return True
def check_mask(s):
if not check_ip(s):
return False
l = s.split('.')
b = ''
for i in l:
b += bin(int(i))[2:].zfill(8)
if b.find('0') - b.rfind('1') != 1:
return False
return True
def check_same(mask,ip1,ip2):
m = mask.split('.')
mb = ''
for i in m:
mb += bin(int(i))[2:].zfill(8)
i1 = ip1.split('.')
ip1b = ''
for i in i1:
ip1b += bin(int(i))[2:].zfill(8)
a1 = int(mb,2) & int(ip1b,2)
i2 = ip2.split('.')
ip2b = ''
for i in i2:
ip2b += bin(int(i))[2:].zfill(8)
a2 = int(mb,2) & int(ip2b,2)
if a1 != a2:
return False
return True
while 1:
try:
mask = input()
ip1 = input()
ip2 = input()
if check_mask(mask) and check_ip(ip1) and check_ip(ip2):
if check_same(mask,ip1,ip2):
print(0)
else:
print(2)
else:
print(1)
except:
break