题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
def checkip(ip): if len(ip) == 4: try: for i in range(4): if ip[i] < 0 or ip[i] > 255: return False return True except: return False return False def ip2bin(ip): bin_ip = "" for i in ip: bin_ip += bin(i)[2:].rjust(8, "0") return bin_ip def checkmask(mask): if checkip(mask): s = ip2bin(mask) for i in range(31): if s[i] == "0": break if s[i + 1] == "0": for j in range(i + 1, 31): if s[j + 1] == "1": return False return True return False while True: try: mask = list(map(int, input().split()[0].split("."))) ip1 = list(map(int, input().split()[0].split("."))) ip2 = list(map(int, input().split()[0].split("."))) if not checkmask(mask) or not checkip(ip1) or not checkip(ip2): print(1) continue bin_mask = ip2bin(mask) bin_ip1 = ip2bin(ip1) bin_ip2 = ip2bin(ip2) flag = True for i in range(32): if int(bin_ip1[i]) * int(bin_mask[i]) != int(bin_ip2[i]) * int(bin_mask[i]): print(2) flag = False break if flag: print(0) except: break