此題面試時常有:
解答方法有以下三種:
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 的第一位就是你要求的...