a的n次方的高效演算法

2021-07-03 09:10:22 字數 804 閱讀 2543

a^b的高效演算法

lz之所以要貼上這個演算法,是因為lz的乙個朋友用這個小演算法考過lz,我當時想到了這個演算法,思想有了,但是沒有實現出來,但是我朋友用遞迴的方法寫的,但是遞迴的lz的理解不是很深刻,所以這裡用自己理解的非遞迴的形式寫出來。

#include

int pow(int a,int b) //不用棧的方法

return a*r;

}int _pow(int a,int b) //用棧操作

for(int i=index-1;i>=0;i--)

}return res;

}int __pow(int a,int b) //最原始的方法,一般都能想到,但是效率很差,

int main()

return

0;}

原理:

假如 b=13

那麼 b的二進位制形式為1101,我們知道:

那麼:

在這裡我們可以利用棧這種資料結構來實現將b轉為二進位制,大概思路就是這樣。

執行截圖:

求n次方的演算法

今天看交大的資料結構書,看到了乙個計算n次方的好演算法,它的時間複雜度只有logn,一般我們可能用迴圈,時間複雜度是o n 當這個演算法只有o logn 確切點說是o 6logn 演算法貼來.真高興 intpower intx,intn m n inty 1 while t 1 returny 原理...

N!高效演算法

階乘遞迴 include intf int n intmain 大數階乘問題 10000以內的階乘及位數 一 include intmain while carry for int k digit k 1 k printf d a k 1 printf n printf length d n dig...

大數n次方演算法筆記

問題是解決 a n 的問題。最簡單的想法是使用迴圈 long result 1 for i 1 i n i return result 但是,如果a與n足夠大,就有可能在迴圈的某一步時得到過大的result,超出現有變數儲存範圍。所以,需要有其他方法對應a n 的問題。具體演算法 的文章已經給出了。...