存储总量为1到40亿

时间:2011-08-23 17:48:36

标签: architecture

受此问题启发(Find an integer not among four billion given ones)。

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

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

Here是一种可能有用的算法

3 个答案:

答案 0 :(得分:9)

您链接的功能描述了如何找到第n Triangular Number,它被定义为从1到n的n个自然数之和。

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

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

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

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

答案 1 :(得分: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位。

答案 2 :(得分:4)

如果为整数选择合适的编码,则有一点是充足的。

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

相关问题