2

我有以下 Python 片段

v=(2*(a/2)+1)**2
U=int(((4*N+v)**.5-1)/4)

N 在 10^12 的数量级上,变量“a”具有许多值,但其最大值也为 10^12 量级。

但是,我似乎无法用 C++ 编写此代码而不会在某处溢出某些东西,而且我有点卡住了。

编辑:是的, 2*(a/2) 是故意的,因为在 Python 中,除法与地板除法相同。有时 a 很奇怪,所以我需要将其减半,将其取底,然后将其重新乘以 2,这就是该代码的作用。

4

1 回答 1

3
>>> a=10**12
>>> v=(2*(a/2)+1)**2
>>> log(v,2)
79.72627427729958

您计算的值需要 80 位,而 long long 只有 64。您需要一个扩展的算术包来处理它。

于 2012-11-27T03:32:58.443 回答