题目要靠猜系列 对网络号,主机号不了解的同学们整***了 不断测试发现 子网掩码规则 为 第3段随意,第4段0 前两段255

注意点的话就是and运算要补足8位,其他好像没什么了 往往看上去复杂的题目是最简单的,就像这个题目。 感觉好多中等的题比这个难,这题难就难在题目太长了吧。。。

// var a = 10;
// print(a.toString(16));
for(var i = 0;i<1000;i++){
    var stopFlag = false;
    var zip = readline();
    if(!zip){
        stopFlag = true;
        i = 1000;
    }
    if(!stopFlag){
        var ip1 = readline();
        var ip2 = readline();
        var arrZip = zip.split(".");
        var arrZip1 = ip1.split(".");
        var arrZip2 = ip2.split(".");
        for(var i = 0;i<4;i++){
            if(i!=2 && Number(arrZip[i]) != 255 && Number(arrZip[i]) != 0){
                print(1);
                stopFlag = true;
                i = 4;
            }
            if(Number(arrZip1[i])< 0 || Number(arrZip1[i])>255 || Number(arrZip2[i])>255 || Number(arrZip2[i])<0){
                print(1);
                stopFlag = true;
                i = 4;
            }
        }
    }
    if(!stopFlag){
        var arrZipTo2 = to2(arrZip);//二进制的zip  子网掩码
        var arrZip1To2 = to2(arrZip1);//二进制的ip1
        var arrZip2To2 = to2(arrZip2);
//         console.log(getBeforCompare(arrZipTo2,arrZip1To2),"11111");
//         console.log(getBeforCompare(arrZipTo2,arrZip2To2),"22222");
        if(getBeforCompare(arrZipTo2,arrZip1To2)==getBeforCompare(arrZipTo2,arrZip2To2)){
            print(0);
        }else{
            print(2);
        }
    }
}
//比较2个数组
function getBeforCompare(arr1,arr2){
    var arr = [];
    for(var i = 0;i<2;i++){
        arr[i] = getAnd(arr1[i],arr2[i]);
//         console.log(arr[i]);
    }
    return arr.join("");
}


//通过ip的数组获取二进制ip数组
function to2(arr){
    var arr1 = [];
    for(var i = 0;i<arr.length;i++){
        var str = Number(arr[i]).toString(2);
//         console.log(str,"=========");
        arr1.push(str);
    }
//     console.log(arr1);
    return arr1;
}
//获取一段and运算后的二进制结果
function getAnd(arr1,arr2){
    var arr = [];
    if(arr1.length < 8){
        arr1 = getBw(arr1).join("");
    }
    if(arr2.length < 8){
        arr2 = getBw(arr2).join("");;
    }
//     console.log(arr1,arr2,"------")
    
    for(var i = 0;i<8;i++){
        if(arr1[i] == arr2[i]){
            arr[i] = 1;
        }else{
            arr[i] = 0;
        }
    }
//     console.log(arr,"--afterAnd--");
    return arr.join("");
}

function getBw(arr){
    var len = arr.length;
    var arr1 = [];
    for(var i = 0;i<8-len;i++){
        arr1.push(0);
    }
    return arr1.concat(arr);
}