zoukankan      html  css  js  c++  java
  • UVA

    /*
      有时间日后应该重做***!
      因为做这道题的时候,还没有学到计算机网络,查了许久关于网络地址和掩码的资料,但总觉得对这个概念并不算太清晰,所以只能暂且先用别人的思路写一次,日后学到应该重做!
      
      代码借鉴了:
      http://blog.csdn.net/ronggerace/article/details/42346413
      这个blog的解析较为详细:
      http://blog.csdn.net/hahaac/article/details/52649997
    */



    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int M = 10005;
    int a[M][32];
    
    int main()
    {
    	int T, m, b[32], c[32]; // b、c分别为网络地址和子网掩码的32位二进制 
    	while (cin >> T)
    	{
    		for (int i = 0; i < T; i++)
    		{
    			for (int j = 0; j < 4; j++)
    			{
    				cin >> m;
    				getchar(); //.
    				for (int k = 7; k >= 0; k--)
    				a[i][8 * j + 7 - k] = (m >> k) % 2;
    			}	
    		}
    		int mid = -1, i, j;
    		for (i = 0; i < 32; i++) //遍历各位,找到第一个不同的位置 
    		for (j = 1; j < T; j++)
    		if (a[0][i] != a[j][i])
    		{
    			mid = i;
    			j = T; i = 32; //退出两层循环 
    		}
    		
    		if (mid == -1) mid = 32;
    		
    		for (i = 0; i < mid; i++)
    		{
    			b[i] = a[0][i];
    			c[i] = 1;
    		}
    		
    		for (i = mid; i < 32; i++)
    		{
    			b[i] = c[i] = 0; 
    		}
    		
    		int p[4], q[4];
    		memset(p, 0, sizeof(p));
    		memset(q, 0, sizeof(q));
    		for (i = 0; i < 4; i++)
    		for (j = 0; j < 8; j++)
    		{
    			p[i] = p[i] * 2 + b[8 * i + j];
    			q[i] = q[i] * 2 + c[8 * i + j]; 
    		}
    		
    		char ch = '.';
    		cout << p[0] << ch << p[1] << ch << p[2] << ch << p[3] << endl;
    		cout << q[0] << ch << q[1] << ch << q[2] << ch << q[3] << endl;
    	}
    		
    	return 0;
    }


  • 相关阅读:
    CF1284G
    5-3 Harbor高可用部署 下
    5业务系统迁移kubernetes-----准备工作(平稳迁移做好准备)
    题解-CF1453F Even Harder
    题解-CF961F k-substrings
    Docker 数据卷容器(实现两个或多个容器间数据同步)
    Docker 具名和匿名挂载
    Java-IO中的节点流和处理流
    《机器学习十讲》学习报告二
    rpc基本思路
  • 原文地址:https://www.cnblogs.com/mofushaohua/p/7789470.html
Copyright © 2011-2022 走看看