当前位置: 首页 > 面试题库 >

在Python中处理非常大的数字

柯瀚玥
2023-03-14
问题内容

我一直在考虑使用Python进行快速手牌评估。在我看来,加快处理速度的一种方法是将所有牌面和西服表示为质数,然后将它们相乘以表示手:

class PokerCard:
    faces = '23456789TJQKA'
    suits = 'cdhs'
    facePrimes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59, 61]
    suitPrimes = [2, 3, 5, 7]

    def HashVal(self):
      return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]

这将为每只手提供一个数值,通过模可以告诉我手中有多少个国王或有多少个心。例如,任何有五个或更多球杆的手都会平均除以2 ^ 5;任何有四位国王的手将平均除以59 ^ 4,依此类推。

问题在于,像AcAdAhAsKdKhKs这样的七张牌手的散列值约为62.7万亿次,这将需要超过32位才能在内部进行表示。有没有一种方法可以在Python中存储如此大的数字,从而允许我对其执行算术运算?


问题答案:

Python支持“ bignum”整数类型,该整数类型可以处理任意大数。在Python 2.5+中,此类型被调用long并与该int类型分离,但是解释器将自动使用更合适的那个。在Python 3.0+中,该int类型已完全删除。

不过,这只是实现细节-只要你拥有2.5版或更高版本,就只需执行标准数学运算,并且任何超出32位数学界限的数字都将自动(透明地)转换为bignum。



 类似资料:
  • 我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的python代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了get上下文(). prec,但是我仍然达到了极限。 代码如下: 我怎么能看到这些美丽的数字?它在我的四核上打印速度相对较快。这只是为了给ProjectEuler带来乐趣,问题#48,请不要破坏者。我不想要解决方案,也不想让工作为我完成,

  • 问题内容: 抱歉,很长的帖子! 我有一个包含约30个表的数据库(InnoDB引擎)。这些表中只有两个表,即“ transaction”和“ shift”非常大(第一个表有150万行,而shift有23000行)。现在一切正常,我对当前的数据库大小没有任何问题。 但是,我们将有一个类似的数据库(相同的数据类型,设计等),但数据库更大,例如,“事务”表将具有约 10亿条记录 (每天约有 230 万笔交

  • 我正在处理非常大的数字(1000000位),我需要计算它们的平方根。我的代码似乎达到了极限。 我得到了这个错误: 代码有效期至10**308。但除此之外,它似乎破碎了。我也在命令行中检查了这一点。同样的错误。有人能帮我吗? 如果这是Python限制,是否有其他方法可以使用?

  • 本文向大家介绍python处理大数字的方法,包括了python处理大数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python处理大数字的方法。分享给大家供大家参考。具体实现方法如下: 运行结果如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我使用的是Guidewire开发工作室(基于IntelliJ的IDE),在处理大文本文件(~1500行及以上)时速度非常慢。我也尝试了一个开箱即用的社区IntelliJ,但遇到了同样的问题。 当我打开这些文件时,键入一个字符需要 1 秒,即使我清楚地看到使用的内存仍然足够 (1441 MB/3959 MB)。此外,如果我打开多个文件,它会迅速吸收所有内存(我只为 IntelliJ 分配 4GB)。

  • 问题内容: 我需要在MySQL表中存储大量(数千万)的512位SHA-2哈希。为了节省空间,我想以二进制形式存储它们,而不是以十六进制数字的字符串存储。我使用的是ORM(DBix :: Class ),因此将从代码中抽象出存储的特定详细信息,从而可以将它们扩充到我选择的任何对象或结构中。 MySQL的类型是64位。因此,我可以从理论上将散列划分为八列。不过,这似乎很荒谬。我的其他想法只是使用单个列