题目:给你一堆ip,求他们的最小网络地址和网络掩码
思路:找到最大的ip和最小的ip,把他们转化成二进制,从头到尾找二进制位相同的个数,最小网络地址把后面的不同的所有二进制变成0,网络掩码把前面的相同变成一
代码:
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; struct node { char k[35]; } data[1005]; bool cmp(node a,node b) { if(strcmp(a.k,b.k)<0) return true; else return false; } void cut(char *str,int num) { int ans=0; int q=8; int flag=1; for(int i=0; i<strlen(str); i++) { if(str[i]!='.') { ans=ans*10+str[i]-'0'; } else { flag++; while(ans) { data[num].k[q]=ans%2+'0'; ans=ans/2; q--; } q=8*flag; ans=0; } } while(ans) { data[num].k[q]=ans%2+'0'; ans=ans/2; q--; } data[num].k[33]='