题解 | #识别有效的IP地址和掩码并进行分类统计#

识别有效的IP地址和掩码并进行分类统计

https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682

import sys
def change(temp):
    try:
        li = temp.split(".")
        return int(li[0])*pow(256,3)+int(li[1])*pow(256,2)+int(li[2])*pow(256,1)+int(li[3])
    except:
        return -1
def check(temp):
    temp3 = change(temp)
    temp2 = bin(temp3)
    temp2 = temp2[2:]
    where0 = temp2.find("0")
    where1 = temp2.rfind("1")
    if where1+1 == where0:
        return False
    return True
res = [0,0,0,0,0,0,0]
lines = sys.stdin.readlines()
for line in lines:
    temp = line.split("~")
    start = change(temp[0])
    end = change(temp[1])
    if start == -1:
        res[5] += 1
        continue
    if start >= change("1.0.0.0") and start <= change("126.255.255.255"):
        if check(temp[1]):
            res[5]+=1
            continue
        else:
            res[0]+=1
    elif start >= change("128.0.0.0") and start <= change("191.255.255.255"):
        if check(temp[1]):
            res[5]+=1
            continue
        else:
            res[1]+=1
    elif start >= change("192.0.0.0") and start <= change("223.255.255.255"):
        if check(temp[1]):
            res[5]+=1
            continue
        else:
            res[2]+=1
    elif start >= change("224.0.0.0") and start <= change("239.255.255.255"):
        if check(temp[1]):
            res[5]+=1
            continue
        else:
            res[3]+=1
    elif start >= change("240.0.0.0") and start <= change("255.255.255.255"):
        if check(temp[1]):
            res[5]+=1
            continue
        else:
            res[4]+=1
    else:
        continue
    if start >= change("10.0.0.0") and start <= change("10.255.255.255"):
        res[6]+=1
    if start >= change("176.16.0.0") and start <= change("172.31.255.255"):
        res[6]+=1
    if start >= change("192.168.0.0") and start <= change("192.168.255.255"):
        res[6]+=1 
print(*res)

解题顺序很重要 纯暴力

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务