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")
相关推荐
星星火柴9369 分钟前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
Coovally AI模型快速验证15 分钟前
当视觉语言模型接收到相互矛盾的信息时,它会相信哪个信号?
人工智能·深度学习·算法·机器学习·目标跟踪·语言模型
悲伤小伞1 小时前
Linux_Socket_UDP
linux·服务器·网络·c++·网络协议·udp
电院工程师1 小时前
SIMON64/128算法Verilog流水线实现(附Python实现)
python·嵌入式硬件·算法·密码学
轮到我狗叫了1 小时前
力扣.84柱状图中最大矩形 力扣.134加油站牛客.abb(hard 动态规划+哈希表)牛客.哈夫曼编码
算法·leetcode·职场和发展
丛雨要玩游戏1 小时前
字符函数和字符串函数
c语言·开发语言·算法
八个程序员1 小时前
自定义函数(C++)
开发语言·c++·算法
ad钙奶长高高1 小时前
【C语言】初始C语言
c语言·开发语言·算法
罗西的思考1 小时前
【Agent】 ACE(Agentic Context Engineering)源码阅读笔记---(3)关键创新
人工智能·算法
微露清风2 小时前
系统性学习C++-第十讲-stack 和 quene
java·c++·学习