题解 | #判断两个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是否属于同一子网#