受此問題啓發(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是一種算法,可以幫助
受此問題啓發(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是一種算法,可以幫助
你鏈接的函數來描述如何找到第n個Triangular Number,其被定義爲n個自然數從1到n的總和。
用4-十億正到函數給出8000000002000000000.
表達,作爲一個比特數可以通過取的值的基數爲2的對數和上舍入來計算出 -
小區(日誌(8000000002000000000)/ log(2))= 63
因此,需要63位的存儲空間。
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位。
如果您爲整數選擇適當的編碼,一點點就夠了。
如果有超過2^N你可能需要存儲可能值你只需要超過ñ位。這裏只有一個值需要能夠存儲。
你是說你可以將8000000002000000000的值存儲在一個位? – Richard
是的。事實上,有無數的編碼可以讓我做到這一點。 – RoundTower
_encodings_。好,可以。 +1 – Richard
我不能相信你真的在網上查到所有數字的總和,從1到100萬。使用三角形數字標識甚至[wolfram alpha](http://www.wolframalpha.com/input/?i=sum+from+1+to+1000000) –
嗯......該鏈接描述了三角形公式。無論如何,這個問題不是關於價值,而是存儲需求。 (而不是1到100萬,但是1到40億) – Richard