求幂指数的低时间复杂度方法

Johnny_de 2008-07-14 10:47:39
暂时没明白其原理,大家来谈论下。

算法思想:把指数化成2进制的形式,然后根据指数从左往右,若为1,则有表达式Y=Y*Y*X(Y为中间计算结果,X为2进制指数),若为0,则有Y=Y*Y.
...全文
220 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tailzhou 2008-07-14
  • 打赏
  • 举报
回复
假设 求X^N,N的二进制表示为bn...b2b1b0

记X^N=X^(bn...b2b1b0)


X^(bn...bi)==Y;
那么
X^(bn...bib(i-1))
==X^((bn...bi << 1) + b(i-1))
==X^(bn...bi * 2) * X^b(i-1)
==Y*Y*X^b(i-1)

当b(i-1)==1时;
Y*Y*X^b(i-1)==Y*Y*X
当b(i-1)==0时;
Y*Y*X^b(i-1)==Y*Y





Johnny_de 2008-07-14
  • 打赏
  • 举报
回复
多谢楼上的指点,看来我对左移操作没有很好的理解,受益匪浅!谢谢!

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧