当前位置: 首页 > news >正文

武夷山网站建设wzjseo可以搜索任何网站的浏览器

武夷山网站建设wzjseo,可以搜索任何网站的浏览器,wordpress piklist,诸暨网站建设公司快速幂算法 文章目录快速幂算法一、简单介绍二、计算7107^{10}710三、一般化1、计算ana^nan的快速方法:2、时间复杂度分析:四、代码五、参考资料一、简单介绍 ​ 快速幂(Exponentiation by squaring,平方求幂)是一种简…

快速幂算法

文章目录

一、简单介绍

快速幂Exponentiation by squaring,平方求幂)是一种简单而有效的小算法,它可以以O(logn)O(log_n)O(logn)的时间复杂度计算乘方。快速幂不仅本身非常常见,而且后续很多算法也都会用到快速幂。

二、计算7107^{10}710

​ 让我们先来思考一个问题:7的10次方,怎样算比较快?

​ 最朴素的想法,77=49,497=343,… 一步一步算,共进行了9次乘法。这样算无疑太慢了,尤其对计算机的CPU而言,每次运算只乘上一个个位数,无疑太屈才了。这时我们想到,也许可以拆分问题。

​ 我们换一个角度来引入快速幂。还是7的10次方,但这次,我们把10写成二进制的形式,也就是 1010。于是这个问题就变成了求7的二进制(1010)次幂。这样就只需要计算4次,相比于9次,大大提升了效率。

做法:计算7107^{10}710,也就是计算 71010=7(1000)2×7(10)2=17(8)10××7(2)107^{1010} = 7^{(1000)_2} \times 7^{(10)_2} = 17^{(8)_{10}} \times \times 7^{(2)_{10}}71010=7(1000)2×7(10)2=17(8)10××7(2)10,那么只需要计算7(8)10+7(2)107^{(8)_{10}}+7^{(2)_{10}}7(8)10+7(2)10。更一般化,只需要计算720,721,722,...,72n7^{2^{0}},7^{2^{1}},7^{2^{2}},...,7^{2^{n}}720,721,722,...,72n

三、一般化

1、计算ana^nan的快速方法:

(1)将nnn 转化成二进制形式,例如1011010

(2)转化后的形式为a(xkxk−1...x2x1x0)2=axk0...00×a0xk−1...00×a00...10×a00...01a^{(x_kx_{k-1}...x_2x_1x_0)_2} = a^{x_k0...00} \times a^{0x_{k-1}...00} \times a^{00...10} \times a^{00...01}a(xkxk1...x2x1x0)2=axk0...00×a0xk1...00×a00...10×a00...01.

(3) 需要计算的数值为a1,a2,a4,a8,....,a2na^{1},a^{2},a^{4},a^{8},....,a^{2^{n}}a1,a2,a4,a8,....,a2n.

2、时间复杂度分析:

一般求解 ana^nan 时,需要计算n次。但是使用快速幂算法之后,将nnn 表示成二进制只需要O(logn)O(log_n)O(logn) 位数字,只需要计算O(logn)O(log_n)O(logn)次。

四、代码

public static Long quickPow(Long a,Long n,Long p){//结果Long res = 1L;while (n != 0) {//判断 n 的二进制的最后一位是否为0if((n&1)!=0){//当n的二进制最后一位为1时,乘以当前的权重res = (res*a)%p;}//更新n,每次n向右移一位n = n >> 1;//更新每一位的权重a = (a*a)%p;}return res;
}

五、参考资料

[1] 基础算法—快速幂详解

[2] 快速幂算法

幂算法](https://blog.csdn.net/HouGOD/article/details/123847315)

http://www.mnyf.cn/news/14872.html

相关文章:

  • 网上服装定制平台seo网站优化专家
  • 购买了域名之后怎么做网站域名查询站长工具
  • asp语言的网站建设百度服务商
  • 企业宣传手册模板seo关键词外包公司
  • 网站策划怎么做网络营销推广外包服务
  • 怎么做免费个人网站现在做百度推广有用吗
  • 淘宝了做网站卖什么好广州今天刚刚发生的重大新闻
  • 购物网站后台好管理吗长春网站制作公司
  • 请将已备案网站接入访问seo推广招聘
  • 多个网站如何做301谷歌google地图
  • wordpress和wix网站seo标题是什么意思
  • 做电子商务网站需要学什么免费seo网站诊断免费
  • 做网站 数据库网站建站方式有哪些
  • 100M家用宽带可做网站服务器吗东莞谷歌推广
  • 做网站广告多少钱百度不能搜的十大禁词
  • 文案写作网站百度seo和sem的区别
  • 做网站背景步骤自己制作网页的网站
  • 帮做毕设的网站百度竞价排名黑幕
  • 扁平化设计 科技感网站素材百度如何推广网站
  • 建设网站的企业合肥seo网站排名优化公司
  • 东莞哪家公司做网站比较好网站制作400哪家好
  • 湖北建站方案网站快速推广
  • 我们是谁 网站运营互联网营销的方法
  • wordpress复制网站模板专业关键词排名软件
  • 织梦网站模板软文推广的好处
  • 行业 网站 方案网络管理系统
  • 达州市建设规划网站深圳网络推广外包
  • 山东做网站建设的好公司排名下载百度免费版
  • 昆山城市建设投资有限公司网站seo课程在哪培训好
  • 网站开发工具推荐百度合伙人官方网站