博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVALive3520 UVa1590 POJ2799 IP Networks【进制+位运算】
阅读量:5901 次
发布时间:2019-06-19

本文共 2338 字,大约阅读时间需要 7 分钟。

Regionals 2005 >> Europe - Northeastern

问题链接:。

问题简述

一个网络地址ip和一个子网掩码可以描述一个子网。子网是一个数,它是包含4组8位二进制数,总共32位二进制数,前n个位为1,后32-n个位为0,如:255.255.255.48(11111111|11111111|11111111|11111000) 表示某个ip地址如果和A的前n位相等则说明其属于这个子网。

现给定m个网络地址组成一子网,求该子网的最小范围的首地址和子网掩码。

问题分析

需要计算ip地址从哪一位开始不同,以此计算子网掩码

再利用子网掩码计算最小ip。

程序说明:这里给出两个程序,后一种解法没有使用数组,自然要优于前一种解法。两个程序的计算方式不同,结果是一样的。

参考链接:(略)

题记:存储要能省则省。

AC的C++程序如下:

/* UVALive3520 UVa1590 POJ2799 IP Networks */#include 
#include
#include
using namespace std;const int MOD = (1 << 8);const int N = 1000;unsigned int ip[N];void output_result(unsigned int x){ int byte0, byte1, byte2, byte3; byte3 = x % MOD; x >>= 8; byte2 = x % MOD; x >>= 8; byte1 = x % MOD; x >>= 8; byte0 = x; printf("%d.%d.%d.%d\n", byte0, byte1, byte2, byte3);}int main(){ int m; unsigned byte0, byte1, byte2, byte3; while(cin >> m) { memset(ip, 0, sizeof(ip)); for(int i=0; i
<< 24) + (byte1 << 16) + (byte2 << 8) + byte3; } unsigned int mask = ~0; for(int i=1; i

AC的C++程序如下:

/* UVALive3520 UVa1590 POJ2799 IP Networks */#include 
#include
#include
using namespace std;const int MOD = (1 << 8);const int N = 32;int visited[N];void output_result(unsigned int x){ int byte0, byte1, byte2, byte3; byte3 = x % MOD; x >>= 8; byte2 = x % MOD; x >>= 8; byte1 = x % MOD; x >>= 8; byte0 = x; printf("%d.%d.%d.%d\n", byte0, byte1, byte2, byte3);}int main(){ int m; unsigned int byte0, byte1, byte2, byte3, ip, mask, ip2; int bit; while(cin >> m) { memset(visited, -1, sizeof(visited)); while(m--) { scanf("%d.%d.%d.%d", &byte0, &byte1, &byte2, &byte3); ip = (byte0 << 24) + (byte1 << 16) + (byte2 << 8) + byte3; ip2 = ip; for(int i=0; i
>= 1; } } int pos; for(pos=N-1; pos>=0; pos--) if(visited[pos] == 2) break; mask = 0; bit = 1; for(int j=0; j
pos) mask += bit; bit <<= 1; } output_result(ip & mask); output_result(mask); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7563770.html

你可能感兴趣的文章
git的patch 管理
查看>>
Mybatis的ResultMap的使用(转)
查看>>
Ad Hoc
查看>>
Serializable Clonable
查看>>
《mysql数据库备份小脚本》(转)
查看>>
10秒钟完成MySQL数据库结构对比
查看>>
VDI序曲一 服务器虚拟化
查看>>
Forrester:2011年Q2数据库审计与实时保护市场分析报告
查看>>
美国国防部的LPS便携安全系统
查看>>
工作与生活平衡 -- 别跟自己较劲
查看>>
如何做好基层技术管理工作?
查看>>
大数据和云计算的鞍马情-【软件和信息服务】2014.08
查看>>
苏州FreeNAS+ESXi5数据恢复案例
查看>>
rsync重要功能特性02
查看>>
WCF宿主与服务托管
查看>>
案例导学《系统集成项目管理工程师考试考点分析与真题详解》
查看>>
关于SIEM和LM产品形态的小调查
查看>>
【思想篇】要感谢那些曾经慢待你的人
查看>>
学习沟通技巧--- SOFTEN法则与SOLER法则
查看>>
Windows Server 2008 将计算机加入到指定组织单元
查看>>