题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
# 原理跟之前IP地址问题一样
def check_ip(ipv4):
for item in ipv4.split('.'):
if int(item) < 0 or int(item) > 255:
return False
return True
def check_mask(mask):
if not check_ip(mask):
return False
mask_bin = ''.join([bin(int(item))[2:].rjust(8,'0') for item in mask.split('.')])
if mask_bin.find('0') == -1 or mask_bin.find('1') == -1:
return False
if mask_bin[0:mask_bin.rfind('1')].find('0') != -1:
return False
return True
def check(ip1, ip2, mask):
ip1_int = int(''.join([bin(int(item))[2:].rjust(8,'0') for item in ip1.split('.')]),base=2)
ip2_int = int(''.join([bin(int(item))[2:].rjust(8,'0') for item in ip2.split('.')]),base=2)
mask_int = int(''.join([bin(int(item))[2:].rjust(8,'0') for item in mask.split('.')]),base=2)
if mask_int & ip1_int == mask_int & ip2_int:
return True
return False
while True:
try:
mask = input()
ip_1 = input()
ip_2 = input()
if check_ip(ip_1) and check_ip(ip_2) and check_mask(mask):
if check(ip_1, ip_2, mask):
print(0)
else:
print(2)
else:
print(1)
except:
break
#判断两个IP是否属于同一子网#
SHEIN希音公司福利 325人发布