题解 | 判断两个IP是否属于同一子网

判断两个IP是否属于同一子网

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218

import sys
# 判断掩码合法性
def valadd(add):
    res=''
    for d in add:
        if d<0 or d>255:
            return 0
        else:
            #10转2
            b = f"{d:08b}"
            res+=b
    if '01' in res:
        return 0
    if '0' not in res or '1' not in res:
        return 0
    return 1
# 判断ip合法性
def valip(ip):
    for d in ip:
        if d<0 or d>255:
            return 0
    return 1
# 数字转32位二进制再转十进制
def solveda(da):
    res=''
    for d in da:
        #10转2
        b = f"{d:08b}"
        res+=b
    r = int(res,2)
    return r

while 1:
    try:
        add = list(map(int,input().split('.')))
        ip1 = list(map(int,input().split('.')))
        ip2 = list(map(int,input().split('.')))

        if valadd(add) and valip(ip1) and valip(ip2):
            if solveda(add) & solveda(ip1) == solveda(add) & solveda(ip2):
                print("0")
            else:
                print("2")
        else:
            print("1")
    except:
        break












全部评论

相关推荐

点赞 评论 收藏
分享
小牛炒肉:好大的官威居然不是什么官
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务