求m的n次方

2021-08-14 02:11:32 字數 481 閱讀 1829

不考慮高精度,一般有三種做法:

最笨的做法是把m連乘n-1次,這個就不寫了。

第二種做法很好理解,是遞迴的快速冪,當n是偶數時,分解成兩個n/2次方然後再乘起來,n是奇數的時候分解成兩個n/2次方乘起來再多乘乙個m;

第三種做法有點難得理解,是將n化成二進位制,然後把1的那些數字乘起來;

經過測試,n很大的時候,還是第三種方法快。

[cpp]

view plain

copy

#include 

using

namespace

std;  

inta,b;  

long

long

way1(

intn)  

long

long

way2(

intn)  

return

s;  

}  int

main()  

如何求m的n次方(結果很大)

如何求出2的1024次方的準確值?可以將大數乘法進行迭代,結果儲存在陣列中。但是這樣速度極慢,這裡給出一種方法,但仍舊比python直譯器慢一些,可以繼續優化。如果將大數乘法進行迭代,那麼每次運算如果一位出現數值大於9,都需要進製,這是不必要的。源 include include include i...

求a的n次方

此題面試時常有 解答方法有以下三種 1。直接迭代求解,這個很簡單,複雜度o n 1。分治法。複雜度 logn a a n 2 a an 1 如下 intpower inta intn 3.此方法複雜度為 n的二進位制表示中最高位1的index 原理為 事先建立a的 2m m為 0,x 的表。指導找到...

求n次方的演算法

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