求a的n次方

2022-07-19 10:00:10 字數 592 閱讀 7111

此題面試時常有:

解答方法有以下三種:

1。 直接迭代求解,這個很簡單,複雜度o(n)。

1。 分治法。複雜度 logn

= (a*a)n/2 

=  a*an-1

**如下:

intpower(

inta ,

intn)

3.此方法複雜度為 n的二進位制表示中最高位1的index

原理為:事先建立a的 2m m為(0,x);的表。指導找到乙個最小的x使得 n<2x然後 利用a中二進位制位的位置和個數資訊得到最終結果

#define

max 32

intmy_pow(

inta,

intn)

if(n ==0

)unsigned 

inttable[max];

table[0] 

=a; 

for(

inti =1

;i<

max &&i

<

n;i++)i 

=0;intm =

1;while

( n>>

i)returnm;}

求m的n次方

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

求n次方的演算法

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

我想知道怎麼求N的N次方

我想知道怎麼求n的n次方,這個資料是很大的,但是我要的是這個資料的最高位的數,應該有什麼好的方法吧!請大俠們幫幫忙吧!n 1000000000 這個問題提出後,fallening同學便很快的在五分鐘內作出了解答 log 10 n n n log 10 n 因此,log 10 n 的第一位就是你要求的...