HJ33 整数与IP地址间的转换【牛客网】

文章目录

零、原题链接

HJ33 整数与IP地址间的转换

一、题目描述

二、测试用例

三、解题思路

  1. 基本思路:
      利用 IP 地址和整数的转换规则,IP 地址 → \rightarrow → 整数,每个数字乘对应位权的累加和;整数 → \rightarrow → IP地址,不断除以位权;
  2. 具体思路:
    • IP 地址 → \rightarrow → 整数,分割 IP 地址,第 i 个数字的位权为 256 4 − i 256^{4-i} 2564−i
    • 整数 → \rightarrow → IP 地址,除以对应位权,商作为第 i 个数字,余数用于求下一个数字。

四、参考代码

时间复杂度: O ( 1 ) \Omicron(1) O(1)

空间复杂度: O ( 1 ) \Omicron(1) O(1)

cpp 复制代码
#include <cmath>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main() {
    stringstream ss;
    string str;

    cin >> str;
    ss << str;

    long num = 0;
    long t = 256 * 256 * 256;
    while (getline(ss, str, '.')) {
        num += stoi(str) * t;
        t /= 256;
    }

    cout << num << endl;

    cin >> num;
    str = "";
    t = 256 * 256 * 256;
    for (int i = 0; i < 3; i++) {

        str += to_string(num / t) + ".";
        num %= t;
        t /= 256;
    }
    str += to_string(num);

    cout << str << endl;
}
// 64 位输出请用 printf("%lld")
相关推荐
点云SLAM9 分钟前
二叉树算法详解和C++代码示例
数据结构·c++·算法·红黑树·二叉树算法
m0_535064607 小时前
C++模版编程:类模版与继承
java·jvm·c++
今天背单词了吗9807 小时前
算法学习笔记:19.牛顿迭代法——从原理到实战,涵盖 LeetCode 与考研 408 例题
笔记·学习·算法·牛顿迭代法
jdlxx_dongfangxing8 小时前
进制转换算法详解及应用
算法
Tanecious.8 小时前
C++--红黑树封装实现set和map
网络·c++
why技术9 小时前
也是出息了,业务代码里面也用上算法了。
java·后端·算法
2501_9228955810 小时前
字符函数和字符串函数(下)- 暴力匹配算法
算法
IT信息技术学习圈10 小时前
算法核心知识复习:排序算法对比 + 递归与递推深度解析(根据GESP四级题目总结)
算法·排序算法
愚润求学11 小时前
【动态规划】01背包问题
c++·算法·leetcode·动态规划
会唱歌的小黄李11 小时前
【算法】贪心算法入门
算法·贪心算法