题解 | #识别有效的IP地址和掩码并进行分类统计#

识别有效的IP地址和掩码并进行分类统计

http://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682

#include<iostream>
#include<vector>
using namespace std;
vector<int> e(string a)
{
    vector<int>d;
    int c=0;
    for(int i=0;i<a.length();i++)
    {
        
        if(a[i]=='.'&&i!=0)
        {
            int b=0;
            for(int j=0;j<i;j++)
            {
                b=b*10+a[j]-'0';
            }
            d.push_back(b);
        a=a.substr(i+1,a.length());
            c++;
            i=-1;
        }
        else if(a[i]=='.'&&i==0)
        {
              d.push_back(-1);;
             a=a.substr(i+1,a.length());
            c++;
             i=-1;
        }
    }
    if(a.length()>=1)
    {
        int b=0;
          for(int j=0;j<a.length();j++)
            {
                b=b*10+a[j]-'0';
            }
        d.push_back(b);
    }
    else 
    {
         d.push_back(-1);
    }
    return(d);
}
int main()
{
    string a;
    int d[7]={0};
    while(cin>>a)
    {
        string b,c;
        for(int i=0;i<a.length();i++)
        {
            if(a[i]=='~')
            {
                b=a.substr(0,i);
                c=a.substr(i+1,a.length());
                break;
            }
        }
       vector<int>f,g;
        f=e(b);
        g=e(c);
    if(f[0]==0||f[0]==127)
                {
                   continue;
                }
        vector<int>h;
        for(int i=0;i<4;i++)
        {
            vector<int>w;
            if(g[i]!=0)
            {
           while(g[i])
           {
               w.push_back(g[i]%2);
               g[i]=g[i]/2;
           }
                if(w.size()<8)
                {
                    d[5]++;
                    goto x;
                }
            while(w.size()){
            h.push_back(w.back());
                w.pop_back();
            }
        }
            else if(g[i]==0)
            {
                h.push_back(0);
            }
            }
        for(int i=0;i<h.size();i++)
        {
            if(h[i]==0)
            {
                for(int j=i+1;j<h.size();j++)
                {
                    if(h[j]==1)
                    {
                        d[5]++;
                        goto x;
                    }
                }
            }
            else if(h[i]==0&&i==0)
            {
                d[5]++;
                        goto x; 
            }
            else if(h[i]==1&&i==h.size()-1)
            {
                 d[5]++;
                        goto x;
            }
        }
        if(f[2]>=0&&f[2]<=255&&f[3]>=0&&f[3]<=255)
        {
            if(f[1]>=0&&f[1]<=255)
            {
                if(f[0]>=1&&f[0]<=126)
                {
                    if(f[0]==10)
                    {
                        d[6]++;
                    }
                    d[0]++;
                }
                else if(f[0]>=128&&f[0]<=191)
                {
                    if(f[0]==172&&f[1]>=16&&f[1]<=31)
                    {
                        d[6]++;
                    }
                    d[1]++;
                }
                 else if(f[0]>=192&&f[0]<=223)
                {
                     if(f[0]==192&&f[1]==168)
                     {
                         d[6]++;
                     }
                    d[2]++;
                }
                 else if(f[0]>=224&&f[0]<=239)
                {
                    d[3]++;
                }
                else if(f[0]>=240&&f[0]<=255)
                {
                    d[4]++;
                }
                else
                {
                    d[5]++;
                }
            }
            else
                {
                    d[5]++;
                } 
        }
         else
                {
                    d[5]++;
                } 
        x:
        continue;
    }
    for(int i=0;i<7;i++)
    {
        cout<<d[i]<<' ';
    }
    return(0);
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务