题意:
        输入IP地址,输出IP地址对应的10进制数;
        输入10进制数,输出10进制数转换后的IP地址。

方法一:
模拟

思路:
        直接模拟,逐个遍历。
        将IP地址转换为10进制数:将IP地址的每个十进制转为二进制串,再累加计算得到10进制数;
        将10进制数转换为IP地址:将10进制数除二取余,计算出IP地址。

#include <bits/stdc++.h>
#define ll long long 

using namespace std;
ll sum=0;
string a;

void f(ll x){//将x转为二进制串
    if(x==0)
        return;
    f(x/2);
    a+=x%2+'0';
}


int main(){
    string s1;
    ll s2;
    
    while(cin >> s1 >> s2){
        a="";
        sum=0;
        s1+='.';
        int len1=s1.size();
        int x=0;
        for(int i=0;i<len1;i++){//遍历
            if(s1[i]=='.'){
                a="";
                f(x);
                int m=8-a.size();
                while(m--){//补前缀0
                    a='0'+a;
                }
                for(int j=0;j<8;j++){
                    sum=sum*2+a[j]-'0';//计算
                }
                x=0;
            }else{
                x=x*10+s1[i]-'0';//10进制数
            }
        }
        cout << sum << endl;
        
        a="";
        f(s2);
        int m=32-a.size();
        while(m--){//补前缀0
            a='0'+a;
        }
        for(int i=0;i<4;i++){//遍历输出
            int y=0;
            for(int j=0;j<8;j++){//每8个为一组
                y=y*2+a[i*8+j]-'0';
            }
            printf("%d",y);
            if(i!=3)
                printf(".");
        }
        cout << endl;
    }
    return 0;
}

时间复杂度:
空间复杂度:


方法二:
位运算

思路:
        位运算。
        因为stringstream类是以空格为分隔符,所以将IP地址的变为空格。
        然后利用位运算进行计算。
     

#include <bits/stdc++.h>
#define ll long long 

using namespace std;

int main(){
    string s1;
    ll s2;
    
    while(cin >> s1 >> s2){
        for(int i=0;i<s1.size();i++){
            if(s1[i]=='.')
                s1[i]=' ';
        }
        stringstream s(s1);//stringstream读取
        int i=0;
        ll x[4]={0};
        while(s >> x[i++]);
        cout << (x[0]<<24)+(x[1]<<16)+(x[2]<<8)+x[3] << endl;//计算10进制数
        //位运算
        ll a=s2>>24;
        s2=s2-(s2>>24<<24);
        ll b=s2>>16;
        s2=s2-(s2>>16<<16);
        ll c=s2>>8;
        s2=s2-(s2>>8<<8);
        ll d=s2;
        printf("%d.%d.%d.%d\n",a,b,c,d);//计算IP
    }
    return 0;
}


时间复杂度:
空间复杂度: