快速计算幂(例如 2^11)[重复]

2024-06-25

可能的重复:
实现基于整数的幂函数 pow(int, int) 的最有效方法 https://stackoverflow.com/questions/101439/the-most-efficient-way-to-implement-an-integer-based-power-function-powint-int

如何以更好的运行时间计算功率?

例如。 2^13。

我记得在某处看到过,它与以下计算有关:

2^13 = 2^8 * 2^4 * 2^1

但我不明白计算方程右侧的每个分量然后将它们相乘对我有什么帮助。

有任何想法吗?

编辑:我的意思是任何基础。您在下面提到的算法,特别是“平方求幂”如何提高运行时间/复杂性?


有一个通用的算法可以解决这个问题,但是在具有位移位的语言中,有一种更快的方法来计算 2 的幂。你只需输入1 << exp(假设你的位移运算符是<<因为大多数语言都支持该操作)。

我假设您正在寻找通用算法,并且只是选择了一个不幸的基础作为示例。我将用Python给出这个算法。

def intpow(base, exp):
   if exp == 0:
      return 1
   elif exp == 1:
      return base
   elif (exp & 1) != 0:
       return base * intpow(base * base, exp // 2)
   else:
       return intpow(base * base, exp // 2)

这基本上使得指数能够在 log2 exp 时间内计算出来。这是一种分而治之的算法。 :-) 正如其他人所说通过平方求幂 http://en.wikipedia.org/wiki/Exponentiation_by_squaring.

如果将示例插入其中,您可以看到它是如何工作的并且与您给出的方程相关:

intpow(2, 13)
2 * intpow(4, 6)
2 * intpow(16, 3)
2 * 16 * intpow(256, 1)
2 * 16 * 256 == 2^1 * 2^4 * 2^8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速计算幂(例如 2^11)[重复] 的相关文章

  • D3.js 对力导向图使用什么算法?

    我有兴趣确切地知道 D3 使用什么算法来实现库中的力导向图功能 读过科布罗夫的总结 http www cs brown edu rt gdhandbook chapters force directed pdf力导向图的历史让我有点困惑 不
  • 如何从单链表的末尾找到第n个元素?

    以下函数试图找到nth to last单链表的元素 例如 如果元素是8 gt 10 gt 5 gt 7 gt 2 gt 1 gt 5 gt 4 gt 10 gt 10那么结果是7th到最后一个节点是7 任何人都可以帮助我了解这段代码是如何工
  • 将 0 更改为 1 或反之亦然的最优雅的方式

    做接下来的事情最优雅的方式是什么 int i oneOrZero if i 0 i 1 else i 0 你可以假设i只能有 1 或 0 值 i 1 XOR https en wikipedia org wiki Exclusive or值
  • 滑动窗口最小算法

    这是一个家庭作业问题 设 A 是一个整数数组和整数 K 窗口大小 当窗口滑过 A 时 生成在窗口中看到的最小值的数组 M 我发现一篇文章 http home tiac net cri 2001 slidingmin html有这个问题的解决
  • Tarjan 算法的非递归版本

    我有以下 Tarjan 算法的 递归 实现来查找图中的强连接组件 并且工作正常 public class StronglyConnectedComponents public static List
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • 验证是否存在唯一字符串的组合

    class Details String name String age String email String location 1 如果有详细信息列表 如下所示List
  • 运动结构,根据 2D 图像点对应关系重建 3D 点云

    Use case 物体绕其中心以不同的速度旋转 固定摄像机正在观察物体 给定 2D 图像点对应关系重建 3D 点云 当物体旋转时 相机可以看到它的不同部分 从而检测到不同的点和对应关系 Scene A N 张图片b N 1 图像对C N 1
  • 计算排列中“反转”的数量

    设 A 为一个大小的数组N 我们称之为几个索引 i j 一个 逆 如果i lt j and A i gt A j 我需要找到一种接收大小数组的算法N 具有唯一的数字 并返回时间的倒数数O n log n 您可以使用归并排序 http en
  • 将平面表解析为树的最有效/优雅的方法是什么?

    假设您有一个存储有序树层次结构的平面表 Id Name ParentId Order 1 Node 1 0 10 2 Node 1 1 1 10 3 Node 2 0 20 4 Node 1 1 1 2 10 5 Node 2 1 3 10
  • 递归最长递增子序列的记忆

    我为最长递增子序列提出了简单的以下递归解决方案 但是 您可以帮助将记忆包含到这个递归解决方案中吗 public int findLIS int a int maxSoFar int item int count if item a leng
  • 如何使用 C 中的 Banker's Rounding 将 double 舍入为 int

    我想编写一个函数 使用银行家的舍入方法将双精度数舍入为整数 将一半舍入为偶数 http en wikipedia org wiki Rounding Round half to even http en wikipedia org wiki
  • 优化完美平方问题,类似于Python中的硬币找零

    我这里有一个硬币兑换的解决方案 python 中的 leetcode 硬币兑换 https stackoverflow com questions 69517078 coin change leetcode in python 因为完全平方
  • 下面代码的时间复杂度怎么是O(n)?

    I was solving a time complexity question on Interview Bit which is given below in the image 这个问题的正确答案是O N 但根据我的说法 答案应该是
  • python itertools.permutations 的算法

    有人可以解释一下算法吗itertools permutationsPython 标准库 2 6 中的例程 我不明白为什么它有效 Code is def permutations iterable r None permutations AB
  • 如何从文件中读取 N 随机行而不将文件存储在内存中?

    我熟悉从文件中读取单个随机行而不将整个文件读入内存的算法 http perldoc perl org perlfaq5 html How do I select a random line from a file 3f 我想知道这个技术是否
  • 检测360度转弯算法

    我成功检测到手机绕轴的 0 360 度旋转 滚动 但现在我很难设计一种有效的算法来检测一整圈 我的工作但我认为不像我想要的那样优雅和有效的算法是 private boolean detectRoll private boolean chec
  • 将矩形均匀分布在另一个矩形内所需的算法

    我正在寻找一种算法 可以帮助在较大的矩形内分配不同大小的矩形 同时最大限度地减少重叠 我研究过装箱算法 但它们似乎最小化了矩形之间的空间量 在我的例子中 所有被包装的物品都将是正方形 我想我想最大化所有正方形和外部矩形边界之间的距离 这是我
  • 如何获取字母数组的每种可能模式[重复]

    这个问题在这里已经有答案了 可能的重复 有没有更好的方法来进行字符串排列 https stackoverflow com questions 1995328 are there any better methods to do permut
  • 将列表列表替换为“压缩”列表列表,同时保持顺序

    我有一个列表列表 如我所附的代码所示 如果有任何共同值 我想链接每个子列表 然后我想用列表的精简列表替换列表的列表 例子 如果我有一个清单 1 2 3 3 4 I want 1 2 3 4 如果我有 4 3 1 2 3 I want 4 3

随机推荐

  • 未定义/未指定/实现定义的行为警告?

    当编译器注意到具有未定义 未指定 实现定义的行为的语句时 它不能发出警告 如果抛出错误则更好 吗 可能是将一个语句标记为错误 标准应该这么说 但它至少可以警告编码员 实施这样的选择是否存在任何技术困难 或者这根本就是不可能的 我收到这个问题
  • Python Pandas:两个日期之间的差异以周为单位?

    当试图找出两个日期之间的差异 以周为单位 时 import pandas as pd def diff start end x millis end millis start return x 1000 60 60 24 7 1000 de
  • Java 中的堆栈,“包含”问题

    我在程序中使用堆栈 但是当程序尝试检查堆栈中包含哪些元素时遇到问题 我在堆栈中使用整数数组 简短的例子是 Stack
  • MySQL 多索引与多列索引进行搜索

    在我正在编写的软件中 它能够搜索给定的表以获取信息 搜索表单有 5 个字段 当然所有字段都对应于表中的不同列 但所有字段都是可选的 我的问题是关于多列索引是否有效以及为其构建查询的正确方法 如果我有一个跨 5 列的索引 并且我构建了一个查询
  • 在 VSCode 中运行任何 Python 脚本时出现与“&”语法错误?

    在 VSCode 中 我通常使用 Python 扩展运行 Python 脚本 然后右键单击 py 脚本并选择 在终端中运行 Python 文件 在今天之前 此方法运行良好 但现在我遇到了以下问题 C Users Python Python3
  • 映射警告时反应唯一键

    我对反应还很陌生 我面临着一个无法解决的问题 这是我的反应组件 import React from react import Header from Header import ContestPreview from ContestPrev
  • IE中是否有AJAX进度事件以及如何使用它?

    我尝试了所有我能想到的方法 至少可以实现 IE9 中的进度功能 但没有任何效果 所有其他浏览器都可以进入进度函数并编写测试文本 没有任何问题 希望有人能帮助我 谢谢你 var info document getElementById inf
  • .net 中的线程

    我有一个 winforms 应用程序的简单示例 我在目录选择器中选择一个目录 然后单击按钮循环遍历该目录并将目录中的每个文件复制到另一个目录中 我想在后台线程上进行文件复制以避免锁定 GUI 我正在寻找最简单的解决方案 创建后台线程 传递源
  • 语言之间的 Unicode 范围映射

    此链接列出了 7707 种语言http www sil org iso639 3 download asp http www sil org iso639 3 download asp and http en wikipedia org w
  • .NET 自然语言处理工具包 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您能给我一些用于 NET 中自然语言处理的工具包和库吗 有类似 UIMA for NET 的工具吗 有SharpNLP http shar
  • Oracle数据库中的自增主键

    我想在 SQL Server 的列中实现标识或自动递增值 CREATE TABLE RollingStock Id NUMBER IDENTITY 1 1 Name Varchar2 80 NOT NULL 如何才能做到这一点 正如 Orb
  • 为什么阴谋集团重新安装“总是危险的”?

    使用 Cabal 重新安装软件包时 通常会看到以下警告 警告 请注意 重新安装总是很危险的 无论如何继续 此消息背后的一些原因是什么 目前 重新安装软件包意味着破坏性地覆盖已安装的软件包 如果旧包对系统有任何反向依赖性 它们将不再工作 为了
  • VS 2013 和 MSBuild

    我最近升级到 Visual Studio 2013 这在使用 MSBuild API 或带有命令行参数的可执行文件 进行外部构建时导致了连续问题 Issue 1使用 MSBuild 构建时 它不会生成单元测试所需的假程序集 这会导致构建失败
  • 构建 Flask docker 镜像时分配端口

    我最近使用 Flask 创建了一个应用程序 并将 py 文件放入 docker 容器中 然而 我对人们分配端口的在线案例感到困惑 首先在我写的 py 文件的底部 if name main app run host 0 0 0 0 port
  • 使用表单传递数组和用户输入

    我在处理传递数组的表单时遇到困难 我在名为 product 的数组中包含了 5 个变量 a b c d e 然后将其传递到另一个框架使用表单以及需要用户输入值的输入 所以会同时传递一个数组和一个输入 那么我应该使用 post 还是 get
  • MonoTouch 错误:升级到 iOS 5.1 后“未安装 Apple iPhone SDK”

    我已将 iOS 5 0 1 升级到 5 1 并且使用 MonoTouch 5 2 5 和 MonoDevelop 2 8 6 5 当我在 MonoDevelop 中创建示例应用程序时 它显示错误 Apple iphone sdk 未安装 如
  • 如何显示带有排序下拉列表的页面?

    我有一个选择列表
  • 为什么在相同大小的类型之间进行强制转换时,reinterpret_cast 不强制使用 copy_n?

    根据cppreference com http en cppreference com w cpp language reinterpret cast reinterpret cast 通过重新解释底层位模式在类型之间进行转换 但是等等 这
  • 从用户访问令牌获取应用程序 ID(或验证令牌的源应用程序)

    我找到了这个question http facebook stackoverflow com questions 6816568 extract app id and user id from facebook access token 其
  • 快速计算幂(例如 2^11)[重复]

    这个问题在这里已经有答案了 可能的重复 实现基于整数的幂函数 pow int int 的最有效方法 https stackoverflow com questions 101439 the most efficient way to imp