簡體   English   中英

如何將此 Python 轉換為 C++ 而不溢出?

[英]How to convert this Python to C++ without overflow?

我有以下 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。您需要一個擴展的算術包來處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM