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

网站建设专用图形库中小企业认定证明

网站建设专用图形库,中小企业认定证明,中超最新积分榜,自己创建公司网站快速幂算法 文章目录快速幂算法一、简单介绍二、计算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.yayakq.cn/news/287536/

相关文章:

  • 电商网站开发费用家装设计网站开发
  • 怎样做投资网站59网站一起做网店女鞋
  • wow313做宏的网站房房网
  • 怎么设置网站默认首页什么是网络营销?网络营销与传统营销相比有哪些特点?
  • 苏州专业网站制作设计网站建设需求调研报告
  • 如何用群晖做自己的网站闵行营销型网站建设
  • 山东网站建设设计公司外贸平台哪个网站最好知乎
  • 百度网站评分重庆建设工程招标造价信息网站
  • 农博园网站建设投标书网站需要条件
  • 怎样建设网站卖农产品h5 移动 网站 开发
  • 国内炫酷的网站设计网络推广网站 优帮云
  • 蛋糕网站模板建设网站怎么賺钱
  • 网站 意义我是做性视频网站
  • 网站备案的影布怎么做做设计素材在哪个网站
  • 做英德红茶的网站深圳宝安区住房和建设局网站官网
  • 手机像素网站科学做视频网站
  • 佛山做网站的公司有哪些wordpress 公司插件
  • 国际婚恋网站做翻译合法吗最近房地产行情
  • 室内设计网站大全网在家用服务器做网站
  • 黄冈网站开发百度推广seo是什么意思
  • 品牌推广方案设计上海城市分站seo
  • 禹州 什么团购网站做的好绍兴做团购的网站
  • 网站做邮箱做cpa的博客网站类型
  • 怎么做网站网页vps云主机可以建立几个网站
  • 绍兴网站设计智慧社区背景图
  • 如何用ps做网站平面图wordpress找回密码链接
  • 企业做网站用dedeCMS免费吗延吉市住房城乡建设局官方网站
  • 宝塔做两个网站免费网站空间 评测
  • 福州 网站制作 外贸常德外贸网站优化推广
  • 石家庄营销型网站建设公司重庆比较好的广告公司