演算法筆記01--歸納法之整數冪
整數冪
演算法1:對實數x的n次冪設計一個有效的演算法。一種直接的方法是對x用迭代方法自乘n次,這種方法十分低效,因為它需要O(n)乘法。一個高效的方法可以用如下方法推出,令m=n/2,假設已經知道如何計算x^m。那麼有兩種情況:如果n是偶數,那麼x^n = (x^m)^2;否則x^n = x(x^m)^2。
演算法2:令n的二進位制表示為dn-1.....d1,d0。從y=1開始,由n的高位至地位掃描,如果二進位制數字為0,就對y平方;如果為1就對y平方並乘x。這就產生了遞迴演算法EXPREC。
時間複雜度:很明顯該演算法的時間複雜度為O(logn) --考慮n的二進位制長度
思路:由於從n的高位至低位掃描,而低位是很容易取的,因此我們想到棧,由低位至高位將二進位制數依次壓棧,那麼棧頂即是高位,因而遞迴的形式是顯然的。
程式碼:
#include<iostream>
using namespace std;
long long _pow(long long a, long long i)
{
if(i==0) return 1;
long long temp = _pow(a,i>>1);
temp = temp * temp;
if(i&1) temp = temp * a;
return temp;
}
int main()
{
long long a = 4;
long long i = 5;
cout<<_pow(4,5)<<endl;
return 1;
}
相關文章
- 演算法筆記03--歸納法之生成排列演算法筆記
- 演算法筆記02--歸納法之多項式求值(Horner規則)演算法筆記
- SG學習筆記之RMAN簡單歸納筆記
- 從“數學歸納法”到理解“遞迴演算法”!遞迴演算法
- Dijkstra演算法的思想和數學歸納法演算法
- 【組合數學】組合數學簡介 ( 組合思想 2 : 數學歸納法 | 數學歸納法推廣 | 多重歸納思想 )
- 常用Markdown語法歸納
- html標記歸納HTML
- 集合冪級數學習筆記筆記
- 機器學習筆記之Logistic迴歸演算法機器學習筆記演算法
- 學習筆記----快速冪取模演算法筆記演算法
- 《整數分解》讀書筆記筆記
- UVa11054 Gergovia的酒交易(數學歸納法)Go
- 工具歸納
- 學習筆記歸納 2010-9-5.10-17筆記
- 大資料筆記01--大資料概述大資料筆記
- 微軟程式歸納新技術:元程式歸納微軟
- CSS 核心概念歸納之定位和 BFCCSS
- Kotlin知識歸納(一) —— 基礎語法Kotlin
- 決策樹歸納分類演算法理解演算法
- 機器學習-學習筆記(一) --> (假設空間 & 版本空間)及 歸納偏好機器學習筆記
- 【軟考中級筆記】軟體設計師易混知識點歸納筆記
- Node模板引擎學習(2)--Jade語法歸納
- JS演算法之找出缺失的整數JS演算法
- 演算法筆記04--分治法之尋找最大最小元素演算法筆記
- 機器學習演算法:Logistic迴歸學習筆記機器學習演算法筆記
- oracle段管理歸納Oracle
- 【《白話機器學習的數學》筆記1】迴歸機器學習筆記
- 區塊鏈學習筆記01--區塊鏈常識區塊鏈筆記
- 【筆記】歸併排序筆記排序
- 【廖雪峰python入門筆記】整數和浮點數Python筆記
- 演算法筆記_217:黑洞數(Java)演算法筆記Java
- Spring歸納小結Spring
- JavaScript核心概念歸納整理JavaScript
- [心得]git使用技巧歸納Git
- 機器學習(課堂筆記)Day04:線性迴歸法機器學習筆記
- 機器學習筆記之Kmeans演算法機器學習筆記演算法
- Python數模筆記-Sklearn(4)線性迴歸Python筆記