快速求幂算法
来源:互联网 发布:微信公众号矩阵案例 编辑:程序博客网 时间:2024/04/30 04:46
求幂运算即计算X^N,如果使用N-1次乘法自乘,其复杂度为O(N)。最近在看《数据结构与算法分析》时,有一种用递归快速求幂的算法,程序如下:
long int Pow(long int X, unsigned int N){ if (N == 0) return 1; if (N == 1) return X; if (N % 2 == 0) return Pow(X*X, N / 2); else return Pow(X*X, N / 2)*X;}
该算法的复杂度为O(logN)。
下面给出一种不用递归,复杂度仍为O(logN)的计算方法:
#include <stdio.h> int main(void){ int X, N, ans, i; int *x; while (scanf_s("%d %d", &X, &N) != EOF) { printf("%d^%d = ", X, N); x = (int *)malloc(sizeof(int) * (N + 1)); i = 0; ans = 1; x[0] = X; while (N > 0) { x[i + 1] = x[i] * x[i]; if (N % 2 == 1) ans *= x[i]; i++; N /= 2; } printf("%d\n", ans); }}
阅读全文
1 0
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 快速求幂算法
- 常用算法-快速求幂
- 【算法】矩阵快速求幂
- 快速求幂二分算法
- 算法 二分求幂(快速取幂)
- 非递归快速求幂算法
- 经典算法~~快速求幂的方法
- LeetCode Super Pow(快速求幂算法)
- Java中AWT、Swing与SWT三大GUI技术
- [USACO3.4.1]heritage
- Count the Colors (线段树,区间更新)
- 【系统移植】基础理论与环境搭建
- 441. Arranging Coins
- 快速求幂算法
- 解压和压缩命令
- Distance on Chessboard POJ
- 3504: [Cqoi2014]危桥
- Java:数组工具类Arrays类的常用方法的用法及代码
- iPad 界面设计的优秀实例之FLUD
- 前端面试纪实(三):ES6的const和let
- 5-2 表达式转换 (25分)
- Gym