[英]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.