二进制幂--求解a^n问题
来源:互联网 发布:学哪种编程语言好? 编辑:程序博客网 时间:2024/06/01 09:28
思考:站在程序的角度看,如何快速计算出 的值?
1. 第一种方法:写一个for循环,循环13次,每次让前一个值乘以a.即可得出结果.(计算12次)
2. 使用二进制幂算法 , 只需要5次计算过程
二进制幂的计算过程:
首先将13使用二进制表示:1101,然后建立表格,第二行的第一个值为a(不用计算),
后面的每个单元格计算方式:
- 如果所求单元格对应的二进制位为1,:那该单元格的值=前一单元格的值的平方*a
- 若所求单元格对应的二进制位为0,那么所求单元格的值=前一单元格的值的平方
程序伪代码:LeftRightBinaryExponentiation(a,b(n))//用从左到右二进制幂算法计算a^n//输入:一个底数a和二进制位bi,...,b0的列表b(n),这些位来自于一个正整数n的二进制展开式//下面的 <- 表示赋值过程product <- afor i <- (I-1) downto 0 do product <- product * product if b[i] = 1 product <- product * a return product
从伪代码看,二进制幂算法计算次数M(n)明显减少,
(b-1)<=M(n) <= 2(b-1),其中b代表二进制位的长度.考虑到,可以知道从左到右二进制幂算法的效率时对数级的.
0 0
- 二进制幂--求解a^n问题
- 求解n皇后问题
- 求解N皇后问题
- n皇后问题求解
- 求解n的阶乘问题
- N皇后问题求解算法
- n皇后问题求解 java
- poj 1781(约瑟夫问题二进制求解。。。。)
- A*m+B*n=D问题的数学推导求解
- 递归求解排列组合A(n,3)
- 使用C#求解N皇后问题。
- C语言编程 N皇后问题求解
- 递归求解N皇后问题(c语言)
- N皇后问题的求解(C++代码)
- 回溯法求解n皇后问题
- 求解一道有关N-Queen的问题
- QS2算法求解N-皇后问题
- N皇后问题回溯法求解
- java虚拟机
- Aop拦截到的Action 使得@Autowired 无法自动装配问题解决
- HTML 修真录------"深渊三君王"
- Walker之引导界面的实现
- 算法描述
- 二进制幂--求解a^n问题
- match vertex
- Android截图命令screencap与视频录制命令screenrecord
- UITextField添加Block
- HTTPS那些事 用java实现HTTPS工作原理
- linux命令--wget
- java
- eclipse的常用快捷键
- 管理Activity