const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void (async function () { // Write your code here let n_IP = await readline(); let n_num = await readline(); // ip -> 二进制串 -> 十进制数字 let ip_arr = n_IP.split("."); let ip_erjinzhi_str = ""; // 10进制转换为2进制后拼接的字符串 for (let i = 0; i < ip_arr.length; i++) { let tmp = parseInt(ip_arr[i]).toString(2); // 十进制转换为二进制 if (tmp.length < 8) { let chazhi = 8 - tmp.length, qian0 = ""; for (let j = 0; j < chazhi; j++) { qian0 += "0"; } tmp = qian0 + tmp; } ip_erjinzhi_str += tmp; } let num_er_shi = er_str_shi(ip_erjinzhi_str); // 需要打印的十进制数字 // 十进制数字->二进制串-> ip let shi_to_er_str = parseInt(n_num).toString(2); if (shi_to_er_str.length < 32) { let cha0 = 32 - shi_to_er_str.length; let c0 = ""; for (let g = 0; g < cha0; g++) { c0 += "0"; } shi_to_er_str = c0 + shi_to_er_str; } let num_to_ip = ""; for (let f = 0; f < shi_to_er_str.length; f += 8) { let tc = shi_to_er_str.substring(f, f + 8); let tc_num_10 = er_str_shi(tc); num_to_ip = num_to_ip + tc_num_10 + '.'; } num_to_ip = num_to_ip.substring(0,num_to_ip.length-1); // 去掉最后一个点 console.log(num_er_shi); console.log(num_to_ip); })(); // 将二进制字符串转换成10进制 function er_str_shi(str) { let str_arr = str.split(""); let num = 0; for (let j = str_arr.length - 1; j >= 0; j--) { let wei = str_arr.length - j; // 当前在倒数第几位 if (str_arr[j] == "1") { let need2 = wei - 1; if (need2 == 0) { // 最后一位 num += 1; } else { let chengEr = 1; for (let k = 0; k < need2; k++) { chengEr *= 2; } num += chengEr; } } } return num; }