Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有以下 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,这就是该代码的作用。
>>> a=10**12 >>> v=(2*(a/2)+1)**2 >>> log(v,2) 79.72627427729958
您计算的值需要 80 位,而 long long 只有 64。您需要一个扩展的算术包来处理它。