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();}}测评结果

相关新闻

最新新闻

漫步时尚广场实训项目全流程指南:从解压到二次开发避坑详解

漫步时尚广场实训项目全流程指南:从解压到二次开发避坑详解

简介:Web前端开发中,静态网页是所有入门者必须跨越的基础关卡。一个完整的网站项目往往以压缩包形式分发,其中zip格式最为常见,理解zip解压原理(如EOCD标记)是避免项目无法打开的第一步。掌握HTML5语义化标…

2026/8/27 22:23:51
双通道降压稳压器设计全解析:从选型计算到PCB布局调试

双通道降压稳压器设计全解析:从选型计算到PCB布局调试

最近在整理手上一个双通道降压方案,把之前画板、调试、踩坑的过程重新过了一遍,觉得有些东西值得写出来。标题写的“New Dual Step-Down Regulator”,听起来像是某个芯片的发布文案,但实际项目里,“双通道降压”这个关…

2026/8/27 22:23:51
影石Link 2C Pro竖版磁吸改造:横竖屏快速切换低成本方案

影石Link 2C Pro竖版磁吸改造:横竖屏快速切换低成本方案

如果你平时主要做直播、录课、短视频拍摄,影石Link 2C Pro这类带AI跟踪的摄像头本身就很顺手,但实际用起来有一个绕不开的痛点:官方底座和大部分桌面支架默认按横向设计,真到了竖屏直播、口播短视频、竖版精品课拍摄时&#xff0c…

2026/8/27 22:23:51
Token紧缩时代:大模型Token消耗治理实战指南

Token紧缩时代:大模型Token消耗治理实战指南

Tokenmaxxing 这个词,放在半年前听起来还像是一种很高效的 AI 使用策略:什么任务都往上下文里塞,让模型把所有相关内容都生成一遍,甚至为了追求“更聪明”的输出,无条件保留超长思考链。现在这个玩法越来越难维持了。账…

2026/8/27 22:23:51
aigc学术写作的应用路径与效能提升策略探究

aigc学术写作的应用路径与效能提升策略探究

最近,国家自然科学基金和国家自然科学基金青年科学基金的评审结果陆续公布。有人成功获批,开始准备后续研究;也有人暂时没有通过,需要根据评审意见重新梳理研究方向和申请书。无论结果如何,基金申请都不是临时抱佛脚&a…

2026/8/27 22:23:51
绳结全过程建模:从物理过程到拓扑编码的可复现思维训练

绳结全过程建模:从物理过程到拓扑编码的可复现思维训练

1. 这不是一份“答案”,而是一套可复现的建模思维训练手册2015年认证杯SPSSPRO杯数学建模A题(第二阶段)——“绳结全过程建模”,在今天看来,它早已超越一道竞赛题的范畴。我第一次打开这份文档时,是在2018年…

2026/8/27 22:18:51