UVA1590

发布时间:2026/11/3 9:41:14
UVA1590 UVA1590 IP Networks题目大意给定若干 32 位 IP 地址IP 采用点分十进制形式分为 4 个字节每个字节取值 0‑255。需要求出可以容纳全部这些 IP 地址的最小 IP 网络。一个 IP 网络由网络地址和子网掩码共同描述二者同样为 32 位点分十进制。子网掩码二进制特点是高位全部为 1低位全部为 0网络地址由 IP 地址与子网掩码做按位与运算得到。掩码中 0 的位数 n 决定网络大小该网络一共有 2ⁿ个 IP 地址n 越小网络越小。最终输出这个最小网络的网络地址与子网掩码。输入多组测试用例。每组第一行整数 m1 ≤ m ≤1000代表 IP 数量接下来 m 行每行一个 IP 地址同一个 IP 可以重复出现。输出每组输出两行第一行网络地址点分十进制第二行子网掩码点分十进制解题思路程序读取多组测试用例每组先读取 IP 数量将点分十进制格式的 IP 地址转换为 32 位长整型数字接着从最高位向最低位逐位比对全部 IP统计所有 IP 公共一致的高位位数利用预先生成的掩码表得到对应子网掩码将首个 IP 与掩码按位与运算得到网络地址最后把网络地址和子网掩码还原回点分十进制格式输出。完整代码importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;classIpUtil{publicstaticfinallong[]MASK_TABLEnewlong[33];static{for(intbits0;bits32;bits){if(bits0){MASK_TABLE[bits]0L;}elseif(bits32){MASK_TABLE[bits]0xFFFFFFFFL;}else{MASK_TABLE[bits](0xFFFFFFFFL(32-bits))0xFFFFFFFFL;}}}publicstaticlongipToLong(StringipStr){String[]partsipStr.split(\\.);longres0;for(inti0;i4;i){intvalInteger.parseInt(parts[i]);res(res8)|val;}returnres0xFFFFFFFFL;}publicstaticStringlongToIp(longnum){StringBuildersbnewStringBuilder();for(inti3;i0;i--){intshifti*8;longbyteVal(numshift)0xFFL;sb.append(byteVal);if(i!0)sb.append(.);}returnsb.toString();}}publicclassIPNetworks{publicstaticListLongreadInput(Scannersc){ListLongipLongListnewArrayList();intmsc.nextInt();sc.nextLine();for(inti0;im;i){Stringlinesc.nextLine().trim();longipValIpUtil.ipToLong(line);ipLongList.add(ipVal);}returnipLongList;}publicstaticlong[]processData(ListLongipList){intcommonBits32;longfirstipList.get(0);for(intbitPos31;bitPos0;bitPos--){intbit0(int)(firstbitPos)1;booleanallSametrue;for(longip:ipList){intcurrBit(int)(ipbitPos)1;if(currBit!bit0){allSamefalse;break;}}if(!allSame){commonBits31-bitPos;break;}}longmaskIpUtil.MASK_TABLE[commonBits];longnetworkAddrfirstmask;returnnewlong[]{networkAddr,mask};}publicstaticvoidprintResult(long[]result){StringnetIpIpUtil.longToIp(result[0]);StringmaskIpIpUtil.longToIp(result[1]);System.out.println(netIp);System.out.println(maskIp);}publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);while(sc.hasNext()){ListLongipsreadInput(sc);long[]ansprocessData(ips);printResult(ans);}sc.close();}}测评结果

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询