题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
while True: try: zwym = input() ip1 = input() ip2 = input() def check_zwym(zwym): f = False swym_str = '' zwym = zwym.split('.') if len(zwym) == 4: for i in zwym: swym_str += str(bin(int(i))[2:]).rjust(8, '0') if (swym_str.count('10')+swym_str.count('01')) < 2: f = True for i in zwym: if not 0<=int(i)<=255: f = False if f: return swym_str else: return f def check_ip(ip): f = True ip_str = '' ip = ip.split('.') for i in ip: if not 0<=int(i)<=255: f = False for i in ip: ip_str += str(bin(int(i))[2:]).rjust(8, '0') if f: return ip_str else: return f def ip_2_ip(zwym_bin, ip1_bin, ip2_bin): f = False ip1_n_zwym = int(ip1_bin, 2) & int(zwym_bin, 2) ip2_n_zwym = int(ip2_bin, 2) & int(zwym_bin, 2) if ip1_n_zwym == ip2_n_zwym: f = True return f zwym_bin = check_zwym(zwym) if zwym_bin: ip1_bin = check_ip(ip1) ip2_bin = check_ip(ip2) if ip1_bin and ip2_bin: if ip_2_ip(zwym_bin, ip1_bin, ip2_bin): print(0) else: print(2) else: print(1) else: print(1) except: break