模拟python底层数据类型,大整数的实现!

Python密码学实战:用gmpy2库轻松搞定RSA大整数运算(附7个核心函数详解) 本文详细介绍了在Python密码学实践中,如何利用gmpy2库高效处理RSA算法中的大整数运算。通过解析7个核心函数(如mpz、powmod、invert、gcd、iroot等)在RSA加解密、密钥生成及CTF常见攻击场景(如模数分解、低加密指数攻击)中的实战应用,帮助开发者提升密码学分析与解题效率。 阅读详情

我们参考C源码的逻辑,试着用python去模拟一下大整数的实现,这里 只实现了加减法的操作。

(感谢作者的专栏,收获很大,参考 慕课网:《Python 源码深度剖析》)

(1)类: Int32()

  • 这是设计出来的,用来模仿 int类型 4字节的整形数据。
  • 定义了加减乘除4个基本运算
  • 利用数据描述器,对数据进行限制。最大的取值只有 -2 **31 到 2 **31 -1
  • 当运算结果大于 这个范围,便会抛出异常,提示你 整数溢出
  • 提供一个转换函数,当结果取值大时, 转换为 大整数类型进行计算(PyLongObject())
  • 这里需要注意的是, Int32 和 PyLongObject 之间不能运算。 所以并未 在 Int32 做运算是,直接内部进行转换,返回 PyLongObject, 为的就是类型混淆。 用户自己调用方法,将 int32 转换为 大整形进行计算。

(2) 类:PyLongObject()

  • 定义了大整数, 并定义了 大整数 加法和 加法运算
  • 定义 类方法: conver, 可直接以类调用,在 int32 转换起来数值较小时,可直接 a = PyLongObject().conver(1231232132132131231232131231231231) , 创建一个超级大的 大整数对象。 并且,Int32的convert() 转换函数,也是调用这个方法实现。
  • 也定义了 conver2 方法,加 @property装饰器, 在大整数数值较大时, 可直接 像属性一样调用该方法,返回 python 类型的数值,观察它的数值。

(3)类:PyLong_Type()

  • 定义了 绝对值加法和减法, 供PyLongObject() 对象实例进行运算时调用。
  • 另外 类型对象提供相应的方法函数,直接定义为单例,实例对象全局唯一,节省内存的开销。

(4) Base = 2 ** 30 定义在顶部的一个 全局常量。 数组表示大整数的时候,代表每个单元最大的存储,也相当于是进制。 再做基本的加减法运算的时候, 不会超过 int32 表示的大小,方便计算,也是细节之处!

下面上代码:(注释部分为测试程序功能代码,没其他作用)
# 这里用来实现,大整数
Base = 2 ** 30

# 定义 大整数的加减操作
class PyLong_Type():
    '''
        tp_as_number 指向 PyNumberMethods 方法集
        把类型对象设置为单例,全局只有一份
    '''
    def __new__(cls, *args, **kwargs):
        if not hasattr(PyLong_Type, "_instance"):
            cls._instance = super().__new__(cls, *args, **kwargs)

        return cls._instance
        
    # 直接将方法集中的方法定义到 PyLong_Type 里了
    def x_add(self, a, b):
        ''' 绝对值加法 '''
        size_a = abs(a.ob_size)
        size_b = abs(b.ob_size)
        carry = 0

        if size_a < size_b:
            a, b = b, a
            size_a ,size_b = size_b, size_a
        z = PyLongObject(ob_size=size_a + 1)
        
        # 解决 有 0 参与加法的情况(C语言的下面两个循环用python来写,无法解决有0的参与运算。因为python最后的  i 不会自增 1,C语言写的,加入第一个数字是零,那么直接从第二个循环开始,但是python从第二个循环开始,j 值 是等于 i+ 1的,也就是 C 与python的区别, 第一个i++会根据情况加, python的range只能使 i循环到比循环数小 1)
        if size_a == 0:
            return b
        elif size_b == 0:
            return a
        else:
            pass
        
        for i in range(size_b):
            carry += a.ob_digit[i] + b.ob_digit[i]
            z.ob_digit[i] += carry % Base
            # 得到进位
            carry = carry // Base


        for j in range(i+1, size_a):
            carry += a.ob_digit[j]
            z.ob_digit[j] = carry % Base
            carry = carry // Base
        
        # carry 可能还有一个进位
        if carry != 0:
            z.ob_digit[size_a] = carry
        else:
            del z.ob_digit[size_a] 
            z.ob_size -= 1
        
        return z
    
    def x_sub(self, a, b):
        ''' 绝对值减法运算 '''
        size_a = abs(a.ob_size)
        size_b = abs(b.ob_size)

        z = PyLongObject()
        # 绝对值减法结果符号, 1表示正, -1表示负
        sign = 1
        # 表示 向高位的借位
        borrow = 0
        # 用来循环计数(没有定义这个,有0参与运算时下面逻辑,可能会出错)
        i = 0

        # 算法类似于 上面的绝对值加法, 确保a 的绝对值长度 大于等于b
        if size_a < size_b:
            sign = -1 
            a, b = b, a
            size_a, size_b = size_b, size_a
        # 当两者相同长度的时候,挨个从高位依次比较,将大的数,赋值给a
        elif size_a == size_b:
            for i in range(size_a - 1, -1, -1):
                if a.ob_digit[i] != b.ob_digit[i]:
                    break
            
            if (i-1 < 0):
                return z
            if (a.ob_digit[i] < b.ob_digit[i]):
                sign = -1
                a, b = b, a
            # 此时 大于i的数相等,相减为0,只需从 i位置往后进行计算即可
            size_a = size_b = i + 1
            i = 0

        z = PyLongObject(size_a)
        for i in range(size_b):
            borrow = a.ob_digit[i] - b.ob_digit[i] - borrow
            z.ob_digit[i] = borrow % Base
            # 三元表达式
            borrow = 1 if borrow < 0 else 0
        
        if i == 0:
            i = -1
        # (a 长度大于 b的情况 )当还有借位时,继续
        for j in range(i + 1, size_a):
            borrow = a.ob_digit[j] - borrow
            z.ob_digit[j] = borrow % Base
            borrow = 1 if borrow < 0 else 0

        # 判断结果 正负
        if sign < 0:
            z.ob_size = -z.ob_size
        return z

# 自定义大整数类型:
class PyLongObject():
    Py_long = PyLong_Type()
    
    def __init__(self, ob_size = 0):
        """初始化大整数

        :param    ob_refcnt: 引用计数
        :param    ob_type: 类型指针( 这里规定它所使用的方法如 + - 操作 )
        :param    ob_size:  ob_digit 数组的长度
        :param    ob_digit: 用来保存大整数的绝对值(将大整数分为若干段进行保存)
        """ 

        # PyVarobject(变长对象)
        self.ob_refcnt = 1 
        self.ob_type = PyLong_Type
        self.ob_size = ob_size
        self.ob_digit = []
        
        for i in range(self.ob_size):
            self.ob_digit.append(0)


    # 重写加减法运算
    def __add__(self, other):
        # 两个数字均不大于 2*30, 那么直接转换为 原类型(Int32), 相加的数字不会超过2 **32 
        if abs(self.ob_size) <= 1 and abs(other.ob_size) <= 1:
            return PyLongObject.conver(self.conver2 + other.conver2) 

        if self.ob_size < 0:
            if other.ob_size < 0:
                z = self.Py_long.x_add(self, other)
                z.ob_size = -z.ob_size
            else:
                z = self.Py_long.x_sub(other, self)
        else:
            if other.ob_size < 0:
                z = self.Py_long.x_sub(self, other)
            else:
                z = self.Py_long.x_add(self, other)
        return z

    def __sub__(self, other):
        ''' 与加法得算法逻辑基本相同,都是调用 绝对值加减法来实现 '''
        if abs(self.ob_size) <= 1 and abs(other.ob_size) <= 1:
            return PyLongObject.conver(self.conver2 - other.conver2)
        
        if self.ob_size < 0:
            if other.ob_size < 0:
                z = self.Py_long.x_sub(self, other)
            else:
                z = self.Py_long.x_add(self, other)
            z.ob_size = -z.ob_size
        else:
            if other.ob_size < 0:
                z = self.Py_long.x_add(self, other)
            else:
                z = self.Py_long.x_sub(self, other)

        return z

    def __mul__(self, scale):
        raise("暂无乘法功能,敬请期待~")

    def __truediv__(self, scale):
        raise("暂无除法功能,敬请期待~")


    @classmethod
    def conver(self, num):
        ''' 实现进制的转换 '''
        a = PyLongObject()

        
        if isinstance(num, Int32):
            m = num.num
            z = abs(num.num)
            print(m, '---',z)
        else:
            if num < 0:
                m = num
                z = abs(num)
            else:
                m = z = num        

        if z == 0:
            return a
        else:
            while(z != 0):
                a.ob_digit.append(z % Base)
                print(z % Base)
                a.ob_size += 1
                z //= Base            
            if m < 0:
                a.ob_size *= -1
            return a
    
    @property
    def conver2(self):
        '''转换回 Int32 数字'''
        dec = 0
        for i, num in enumerate(self.ob_digit):
            dec += num * Base ** i     
        # 三元表达式,为值增加负号           
        dec = dec * -1 if self.ob_size < 0  else dec  
        return dec

# 因为是用Python来模拟大整数,但是 Python的数字计算已经是大整数了,所以我们来模拟一下,自建对象将Python的整形缩小到32位int


# 定义数据描述器,限制整数的大小为32位int型
class NumField():

    def __init__(self, attrname):
        self.attrname = attrname

    def __get__(self, instance, owner):
        return getattr(instance, self.attrname)

    def __set__(self, instance, value):
        if -2**31 <= value and  value <= 2**31 -1:
            setattr(instance, self.attrname, value)
        else:
            raise("整数溢出,超出最大长度")


# 自定义整数,大小不能超过int(32字节)
class Int32(): 
    num = NumField("_num")
    pylong = PyLongObject

    def __init__(self, num):
        self.num = num
        # self.num_long = self.__convert(num)

    def __str__(self):
        return str(self.num)

    # 重写加减法运算
    def __add__(self, other):
        return Int32(self.num + other.num)

    def __sub__(self, other):
        return Int32(self.num - other.num)

    def __mul__(self, other):
        return Int32(self.num * other.num)

    def __truediv__(self, other):
        return Int32(self.num / other.num)

    def convert(self):     
        a = self
        return self.pylong.conver(a)


# 测试代码逻辑正确性
# 测试 1(测试绝对值加法): 大整数表示的 数字连加 9999次 和 实际python数字运算 9999次 值转化一致,是否相等
'''
suab = Int32(1073741823)

b = 

g = b.convert()

c = PyLongObject()

for i in range(9999):
    print("第",i,"次")
    c += g
    print(g.conver2, g.ob_size, g.ob_digit)
    print(c.conver2, c.ob_size, c.ob_digit)


print("+++++++++++++++")
print(1073741823*9999)
'''

# 测试2(测试绝对值减法): 利用Python 构造两个超大的数,进行大整数运算(连加得到的数字大小有限)
'''
a = -99999999999999999999999 * 1231231231231231231237843653274612123
# p = a * -3
n = PyLongObject()
v = PyLongObject()
m = PyLongObject().conver(a)
# n = PyLongObject().conver(p)

print(m.ob_digit)
print(m.ob_size)
print(n.ob_digit)
print(n.ob_size)

q = n + v
print(q.ob_digit)
print(q.ob_size)
'''

# 测试三 利用减法对大整数进行计算
'''
a = PyLongObject.conver(92341267896345634634334526)
b = PyLongObject.conver(-83671636456362623643653463634)
print('====')
print(a.conver2)
print(a.ob_digit)
print(a.ob_size)
print(a.conver2)
print('=====')
print(b.conver2)
print(b.ob_digit)
print(b.ob_size)


c = b - a 
print(c.conver2)
print(c.ob_digit)
print(c.ob_size)
'''

总结

参考Cpython的底层实现, 整体代码有些过度生硬,可能原因是参考C源码,导致写的 python代码,好像有些缺失面向对象的味道。 在一个 , 源码C的 实现真的是简洁高效!! 绝对值加减的实现, 用两个循环,对所有的情况进行处理。如此简洁,流畅! 在转换为 python代码的时候,期间还是测试出了很多bug,一一解决之后, C 语言的 for 循环 i++, 运用的非常灵活,可在需要时 ++ 或者不 ++, 而python的 rang 只能让 i 最终保持在 循环的 前一个数字, 在对于 有 0参与进来的运算时,python 除了这双重循环, 我还另加了一个逻辑判断。

如此简单高效的代码,逻辑并不是非常复杂, 都是普通代码,普通语法。 但我想以我的实力~ 也很难写出这么高效简洁的代码。

高精度算法对比:数组、字符串与Python大整数3种方案性能实测 本文对比了C语言数组法、C++字符串流法和Python原生大整数三种高精度加法算法的性能表现。通过10万次加法运算实测数据,分析了它们在执行效率、内存占用和代码复杂度等方面的差异,为不同应用场景下的算法选型提供参考。特别适合需要处理超大整数运算的开发者阅读。 阅读详情

相关推荐

Python数据类型底层原理与工程避坑指南

Python数据类型不是语法标签,而是运行时对象所遵循的行为协议,其底层由CPython的C结构体和内存布局决定。理解int的任意精度存储、float的IEEE 754精度限制、str的Unicode码点本质、list的动态数组扩容机制以及tuple的不可变性与可哈希特性,是写出健壮代码的基础。这些numeric和string等核心类型在交互中常引发隐式转换错误、编码异常与引用陷阱,尤其在数据清洗、API集成和微服务序列化等真实场景中高频暴露。掌握isinstance()的合理使用、类型提示(Type Hi

dianxi0949的博客 343

python解决大数问题

直接使用C++/java,由于F(2020)很大,会造成溢出,而py不会 def gcd(a, b): if (b == 0): return a else: return gcd(b, a%b) f = [0 for i in range(2030)] f[1] = 1 f[2] = 1 for i in range(3,2021): f[i] = f[i-2] + f[i-1] print(gcd(f[2020], f[520])) C++代码如下,略显麻烦...

m0_51267207的博客 1219

高位数阶乘计算:C语言数组模拟、Python内置与MATLAB符号运算对比

大数运算在科学计算和工程实践中至关重要,其中高位数阶乘是理解大数表示与存储的经典案例。由于标准数据类型存在精度限制,计算大阶乘需借助数组模拟、任意精度整数或符号运算。C语言通过数组模拟实现完全可控的大数乘法,Python内置int提供便捷的任意精度计算,MATLAB则依赖符号工具箱或数组模拟。这些技术不仅用于组合数学和数值分析,还广泛应用于密码学和算法设计。本文深入探讨三种语言实现高位数阶乘的机制、性能与适用场景,帮助开发者根据需求选择合适方案。

weixin_34151004的博客 222

高精度四则运算程序实现

高精度对于有些语言来说都有成型的库函数供程序员使用,但是其中对于算法的考量来说,我们还是希望重新感受一下实现的过程。以c++为例,对于一般的 int,long,或者 long long 类型的能够满足大多数场景,但对于成百上千位的大数来说这些就无能为力了。本文参考相关资料整理了加减乘除的大数算法小题目。 回顾一下最基本的运算规则用程序如何实现。给定两个正整数,不含前导0, 计算他们的和。 整数长度范围 [1, 100000]实现思路也比较直接,我们无非是要按位相加,时刻记住进位补数即可,根本在于我们用一个数

zt_xiaozhi 341

Python处理大数字的方法

在Python编程中,经常会遇到需要处理大数字的情况,例如大整数计算或者加密算法。你可以使用Python的内置类型int进行基本的整数计算,使用decimal模块进行高精度浮点数计算,使用fractions模块处理分数计算,或者使用第三方库如。如果需要处理分数的计算,Python的fractions模块提供了分数类型的支持。它提供了基本的数学运算操作,例如加法、减法、乘法和除法,可以直接用于大数字的计算。根据具体的需求,选择合适的方法来处理大数字,以确保计算的准确性和效率。,它提供了高效的大整数计算功能。

DarcyCode的博客 1225

如何用链表实现大整数运算?

在密码学(如RSA加密)、天文计算(如行星轨道模拟)、财务系统(如巨额资金流转)中,我们经常需要处理几十位甚至上千位的大整数。这些数字远超编程语言中int(通常64位)或long(通常128位)的存储范围,直接计算会溢出。本文将聚焦正整数的大整数运算(负数运算可通过符号位扩展实现),用链表作为存储结构,详细讲解加法、减法、乘法的实现原理,并提供Python代码实战。用“串珠游戏”类比链表存储大整数详细讲解加法(进位处理)、减法(借位处理)、乘法(分解为加法)的核心逻辑。

AI 算法实战派 1031

Python:Python底层原理:Python的整数是如何实现的

Python 整数在底层是如何存储的

C++ JAVA的专栏 1423

任意超大整数阶乘计算的高效实现与大数运算优化

阶乘作为组合数学中最基础且重要的运算之一,其数学定义为:对于任意正整数 $ n $,$ n!= n \times (n-1) \times \cdots \times 2 \times 1 $,而 $ 0!= 1 $。尽管定义简洁明了,但随着数值增大,阶乘的增长速度呈超指数级上升。例如,20!已超过 $ 2.4 \times 10^{18} $,而 200!的位数高达近 375 位,远超常规数据类型的表示范围。这带来了根本性的计算挑战——传统整型(如intlong long。

weixin_35871529的博客 1198

从零实现Python大整数:高精度计算核心算法与数据结构详解

在计算机科学中,整数运算是基础且核心的操作。CPU原生支持的整数运算通常受限于固定位宽(如32位或64位),当数值超出此范围时,就需要通过软件模拟来实现高精度计算,这便引出了大整数(Big Integer)的概念。其核心原理是利用数组数据结构,将超长整数按特定基数(如2^30)分割存储,并通过模拟手工计算的进位、借位算法来执行基础算术运算。这项技术的工程价值在于,它是密码学、科学计算和金融系统等领域的底层基石,确保了数值计算的精确性与范围不受硬件限制。本文以Python为例,深入剖析了如何从零构建一个大整数

weixin_30512965的博客 285

gzint:用于有效存储大量整数的python3库(代表gzipped-integer)

gzint:高效存储大整数的库 这个 python 库通过在内存中使用压缩字符串表示来帮助存储大量整数。 它使存储和比较大整数变得快速而轻量,同时在需要数学运算时优雅地回退到正常的整数运算。 它可以替代int 。 快速开始: pip3 install gzint >> > from gzint import HugeInt >> > normal_int = 10 ** 1000000 # huge, but compressable (lots of 0's) >> > huge_int = HugeInt ( normal_int ) # HugeInts are useful when needing to store lots of large numbers without running out of memory # Notice how the memo

大整数运算库 大整数四则运算,加减乘除开平方

大整数四则运算,加减乘除开平方 算法原理和C语言实现代码 C++封装 MMX,SSE优化

i64与i128:大整数数据类型原理、应用与避坑指南

在数据处理与系统编程中,整数类型是基础且核心的数据表示方式。其原理基于二进制位宽,通过符号位与数值位的组合,定义了数据的表示范围与精度。随着金融计算、科学模拟与大规模系统的发展,对整数范围的需求远超传统32位整数的±21亿限制,从而催生了64位及128位大整数类型的技术价值。这类大整数能精确处理高额交易、纳秒时间戳、分布式ID等场景,避免了浮点数精度丢失与整数溢出的风险。在工程实践中,pandas进行数据分析时经常需要进行数据类型转换以处理股票交易量等大数字字段;redis作为高性能缓存,其value对大整

dengjuanshou7445的博客 277

Python-一个python3库用于高效的存储大整数可以替代gzippedinteger

一个python3库用于高效的存储大整数(可以替代gzipped-integer).

C语言实现大整数阶乘计算:从算法原理到1~100阶乘表生成

大整数运算(Big Integer)是计算机科学中处理超出基本数据类型范围数值的核心技术,其原理是通过数组或字符串模拟手工算术过程。在C语言等缺乏原生大数支持的环境中,这涉及到数据结构设计、进位处理和算法优化。该技术的工程价值在于解决科学计算、密码学等领域的精度与规模问题。具体到阶乘计算,当数值超过20!时,便必须采用大整数运算。本文以生成1到100的完整阶乘表为应用场景,详细阐述了使用整数数组存储、模拟竖式乘法的实现方案,并深入分析了性能瓶颈与调试技巧,为理解大数处理提供了完整的实践路径。

weixin_30791095的博客 321

Python 实现大整数乘法算法的示例代码

主要介绍了Python 实现大整数乘法算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

【图数据库与知识图谱入门】2.2 图数据库 vs. 关系型数据库 vs. NoSQL数据库

本文对比了关系型数据库、NoSQL数据库和图数据库的核心差异与应用场景。关系型数据库以二维表结构为核心,适合结构化数据的事务处理(如MySQL),但多表关联查询性能随层级增加而下降。NoSQL数据库(如MongoDB)具有灵活schema,适合海量非结构化数据存储,但关联查询能力较弱。图数据库专注于节点-边关系建模,擅长处理复杂关联分析(如社交网络)。通过学生-课程案例展示了MySQL的多表JOIN操作和MongoDB的两种关联实现方式(内嵌文档和文档引用),揭示了不同数据库在数据关联处理上的本质区别。

kngines 1538

从大整数到模运算:手把手实现高性能模块计算器

在计算机科学中,大整数运算和模运算是密码学、数论和分布式系统等领域的基石。大整数通常指位数远超常规数据类型(如64位)的整数,其核心在于如何高效表示与计算。原理上,计算机通过数组分块存储大数,并采用分治算法(如Karatsuba)优化乘法,避免O(n²)复杂度。模运算则在此基础上,确保结果始终处于特定范围内,这对于数据封装和加密至关重要。技术价值上,高效的模幂运算(如快速幂算法)直接支撑了RSA等非对称加密体系的安全性与性能。应用场景广泛,从区块链的椭圆曲线加密到安全协议中的密钥交换,都依赖精确的模运算。本

weixin_33800463的博客 407

IEEE投稿完整流程——以IEEE Transactions on Cybernetics为例【附:论文格式模板】

前言 以下是官方的流程,包括了论文的格式和提交的流程,重要!重要!重要! 在IEEE的官网中,也有论文提交的文件 可以直接参考: 中文版: 作者指南 英文版: Manuscripts-Author-Guide 作者指南的版本指导流程可能和最新版的官网不一致!!! 或者在下面的链接中,按照你的论文类型,选择不同的论文模板: IEEE article template 以下以IEEE Transactions on Cybernetics 为例子 IEEE Transactions on Cyberne

XC___XC的博客 10万+

C++高精度减法:从原理到实现,彻底解决大整数相减

编程中内置整数类型存在精度上限,当数值超过 long long 可表示的范围时,就会产生溢出问题。高精度减法通过数组模拟竖式计算,将大数按位存储,借助借位机制完成逐位相减,并正确处理前导零与负数结果。这一算法是大数运算体系的基础,广泛应用于算法竞赛、身份证号处理、文件偏移量计算及区块链整数哈希比对等场景。本文深入拆解高精度减法的核心思路,包括字符串与数组之间的逆序转换、比较函数的设计、借位状态的传播以及去除前导零的边界细节,并给出完整的C++实现与压位优化技巧,帮助开发者彻底掌握大整数减法的工程实践。

weixin_34343308的博客 338

基于Simulink的永磁同步电机容错控制(缺相容错)

本文基于Simulink平台,详细介绍了永磁同步电机(PMSM)缺相容错控制的仿真实现方法。针对逆变器开路故障导致的缺相问题,提出"检测-重构-补偿"三阶段控制策略:采用电流阈值法快速检测故障(<5ms),重构αβ坐标系实现两相矢量控制,并通过谐波电流注入抑制转矩脉动(<8%)。仿真结果表明,该方法能有效维持故障后电机运行,转速波动<3%,满足电动汽车等关键应用的可靠性需求。文章包含完整的Simulink建模步骤、MATLAB函数代码及参数设置,为工程实践提供了可复现的

xiaoheshang_123的博客 146

【WRFDA运行第五期】运行 OBSGRID 客观分析

运行 OBSGRID 客观分析

WW、forever的博客 1047

高精度加法详解:蓝桥杯基础练习核心算法与C++/Python实现

在计算机编程中,整数类型(如int、long long)的存储范围有限,当需要处理超过64位甚至上百位的大整数时,传统数据类型便会失效。高精度运算正是为解决这一难题而生的基础算法,其核心原理是模拟人工竖式,通过数组或字符串逐位存储数字,并逐位相加、处理进位。掌握高精度加法不仅有助于理解计算机如何突破定长数据类型的限制,更是算法竞赛中大数问题的基础,广泛应用于蓝桥杯、ACM等赛事中的大数加法、阶乘与乘法等问题。本文从字符与数字的转换、逆序存储、最高位进位处理等关键细节出发,结合C/C++与Python的完整代

weixin_32247165的博客 234

8.19华为OD机试真题 新系统 - 基站低能耗时段统计 (Java/Py/C/C++/Js/Go)

8.19华为OD机试真题 新系统 - 基站低能耗时段统计 (Java/Py/C/C++/Js/Go)

算法大师! 1138
上一篇: 判断 矩阵对角线元素相等
下一篇: Python字典hash表的模拟实现
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值