题解 | #判断两个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