求n次方的演算法

2021-08-22 11:07:25 字數 619 閱讀 7721

今天看交大的資料結構書,看到了乙個計算n次方的好演算法,它的時間複雜度只有logn,

一般我們可能用迴圈,時間複雜度是o(n),當這個演算法只有o(logn) 確切點說是o(6logn)

演算法貼來...真高興!

intpower(

intx,

intn)m=

n;inty=

1;while

(t>1)

}returny;}

原理一般的對於 a(2x + b)= a2x * ab

所以就有

(b = 0

時 ) : a 2x

+ b = (ax)2 ;

(b = 1

時):a2x

+ b = (ax)2 * a ;

對於 an ,先把 n的二進位制表示寫出,那麼有

an = a(n1 n2 n3 n4 ..)

(2) = …

從左到右就可以如下表(n = 15的時候 1111)

n的二進位制位 1

1 1

1 累乘

a a2 * a = a3

(a3)2 *a= a7

(a7)2 * a = a15

就這樣的.

求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 的表。指導找到...

求m的n次方

不考慮高精度,一般有三種做法 最笨的做法是把m連乘n 1次,這個就不寫了。第二種做法很好理解,是遞迴的快速冪,當n是偶數時,分解成兩個n 2次方然後再乘起來,n是奇數的時候分解成兩個n 2次方乘起來再多乘乙個m 第三種做法有點難得理解,是將n化成二進位制,然後把1的那些數字乘起來 經過測試,n很大的...

求a的n次方,要求快速演算法

求a的n次方,要求快速演算法。求乙個數的n n是int型正整數 次方,比較簡單的題目,但是也有比較大的優化空間。是求a的n次方的公式。如果n是偶數 如果n是奇數 可以看出是乙個遞推公式的樣子,可以用遞迴來解決。package static public class test public stati...