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 的問題。具體演算法 的文章已經給出了。...