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

2022-05-08 21:06:13 字數 1094 閱讀 5987

我想知道怎麼求n的n次方,這個資料是很大的,但是我要的是這個資料的最高位的數,應該有什麼好的方法吧!

請大俠們幫幫忙吧!!(n <1000000000)

這個問題提出後,fallening同學便很快的在五分鐘內作出了解答

log_10(n^n)=n*log_10(n) 因此,log_10(n)的第一位就是你要求的:)

我在三樓看的很疑惑,於是向同學提出問題,一天之後他給出解答

n^n=10^(nlog(n))=10^(log(n))*10^n= 10^(log(n))*1000...0(n個0)

你要最高位置的數字,只需要計算10^(log(n))的最高位即可:)

而到這裡,大家很明顯就能看出這位同學的推理錯誤10^(n log(n))= 10^(log(n))*10^n。。。哈哈

哈哈,如果你和我一樣開始笑話起這個同學,那麼我們就太可悲了。。。

看看樓下的朋友們是怎麼做的吧,,

hityct1:我的想法:

根據11樓的想法,改動一下。

n^n = 10^(n*log(n))中,

由於 n <1000000000,

n*log(n)取值在[0,9000000000],沒有超出double資料的範圍,沒有益處。

設n*log(n)的整數部分為intpart,分數部分為fractpart,

則n^n = 10^(intpart + fractpart) = 10^intpart * 10^fractpart.

其中10^intpart肯定為10的倍數,不影響結果,可忽略。

所以:

10^fractpart的最高位即為結果。

不用大數,double即可滿足。 

#include

#include

#include

using namespace std;

int gethighest(const double& n)

void main()

關鍵看你專注你什麼了,所以說少笑話他人,而多想想該做什麼事。勤思考,多思考。

這估計也是科學的精神吧,乙個人提出乙個觀點,雖然有點問題,可是大家受到他的啟發,通過論證,而最終得到了答案。

求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很大的...

求n次方的演算法

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