ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UVA 1590 IP Networks 位运算

2021-01-29 19:33:39  阅读:192  来源: 互联网

标签:24 maxx mask .% uint 1590 UVA include Networks


//位运算 
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<stdlib.h> 
using namespace std;

typedef unsigned int uint;
typedef long long ll;

int main()
{
	int m;
	while(~scanf("%d", &m))
	{
		uint a, b, c, d, i;
		uint t, minn = 0-1, maxx = 0;
		
		for(i = 0; i < m; i++)
		{
			scanf("%u.%u.%u.%u", &a, &b, &c, &d); 
			t =  (a<<24) + (b<<16) + (c<<8) + d; //位运算的优先级不高,括号不能少 
			//地址的二进制前32-n位一定是和maxx和minn的前32-n位一致的,通过maxx和mann求出n 
			minn = minn > t ? t : minn;
			maxx = maxx < t ? t : maxx;
		}
		//遍历求n 
		uint mask;
		for(i = 0; i <= 32; i++)
		{
			mask = ~(((1ULL)<<i)-1U);  //ULL不能少  
			if( (mask&minn) == (mask&maxx))
			{
				break;
			}
		} 
		uint add = (long long)(minn&maxx) >> i << i;  //long long 不能少 
		printf("%u.%u.%u.%u\n", add>>24, add<<8>>24, add<<16>>24, add<<24>>24);
		printf("%u.%u.%u.%u\n", mask>>24, mask<<8>>24, mask<<16>>24, mask<<24>>24); 			
	}
	return 0;
}

标签:24,maxx,mask,.%,uint,1590,UVA,include,Networks
来源: https://www.cnblogs.com/hucorz/p/14346667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有