存储总量为1到40亿

Ric*_*ard 1 architecture

灵感来自这个问题(找到一个不是40亿给定的整数).

存储一个整数的存储空间需要多少,该整数是1到40亿的总和?

例如,1 + 2 + 3 + 4 + 5 = 15.总计1到1百万= 500,000,500,000.

是一个可能有用的算法

mat*_*tja 9

您链接的函数描述如何找到第n个三角数,它被定义为从1到n的n个自然数之和.

将40亿作为n代入函数给出8000000002000000000.

表示可以通过取值的基数为2的对数并四舍五入来计算出一些位数 -

ceil(log(8000000002000000000)/ log(2))= 63

因此,需要63位存储空间.


Jür*_*bel 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
Run Code Online (Sandbox Code Playgroud)

答案:63位.


Rou*_*wer 5

如果您为整数选择适当的编码,一位就足够了。

如果您可能需要存储超过 2^n 个可能的值,则只需要超过n位。这里您只需要能够存储一个值。

  • 是的。事实上,有无数种编码可以让我做到这一点。 (2认同)