gpt4 book ai didi

c++ - 如何在不溢出的情况下将此 Python 转换为 C++?

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:42 25 4
gpt4 key购买 nike

我有以下 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 位。你需要一个扩展的算术包来处理它。

关于c++ - 如何在不溢出的情况下将此 Python 转换为 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com