2011-08-23 19 views
1

受此問題啓發(Find an integer not among four billion given ones)。總計1到4億的儲存量爲多少

需要多少存儲空間才能存儲一個整數,該整數是數字1到40億的總和?

例如,1 + 2 + 3 + 4 + 5 = 15。總計1百萬= 500,000,500,000。

Here是一種算法,可以幫助

+0

我不能相信你真的在網上查到所有數字的總和,從1到100萬。使用三角形數字標識甚至[wolfram alpha](http://www.wolframalpha.com/input/?i=sum+from+1+to+1000000) –

+0

嗯......該鏈接描述了三角形公式。無論如何,這個問題不是關於價值,而是存儲需求。 (而不是1到100萬,但是1到40億) – Richard

回答

9

你鏈接的函數來描述如何找到第n個Triangular Number,其被定義爲n個自然數從1到n的總和。

用4-十億正到函數給出8000000002000000000.

表達,作爲一個比特數可以通過取的值的基數爲2的對數和上舍入來計算出 -

小區(日誌(8000000002000000000)/ log(2))= 63

因此,需要63位的存儲空間。

9
In [12]: import math 

In [13]: n=4000000000 

In [15]: sumn = n*(n+1)/2 

In [16]: sumn 
Out[16]: 8000000002000000000L 

In [24]: math.log(sumn)/math.log(2) 
Out[24]: 62.794705708333197 

答:63位。

4

如果您爲整數選擇適當的編碼,一點點就夠了。

如果有超過2^N你可能需要存儲可能值你只需要超過ñ位。這裏只有一個值需要能夠存儲。

+0

你是說你可以將8000000002000000000的值存儲在一個位? – Richard

+1

是的。事實上,有無數的編碼可以讓我做到這一點。 – RoundTower

+0

_encodings_。好,可以。 +1 – Richard

相關問題