gpt4 book ai didi

c++ - 使用 pow() 进行除法溢出

转载 作者:行者123 更新时间:2023-11-30 20:37:27 26 4
gpt4 key购买 nike

Q = (a_i + b_i) / (2^s)
-10^10 ≤ s ≤ 10^10
1 ≤ a_i, b_i ≤ 10^9

It is guaranteed that -10^10 ≤ Q ≤  10^10.

Here s,a_i,b_i are integers and Q is a decimal no.

当我们计算Q时,由于2^s的值太大而出现溢出。我使用pow(2,s)来计算2^s。给定声明中 Q 的范围,我如何计算 Q。

最佳答案

根据您的陈述,我假设Q是十进制,这涉及浮点运算而不是整数算术。

如果由于某种原因无法使用对数,较慢的方法是计算值等于a_i + b_i的浮点值。如果 s 为正数,只需将该值 s 乘以 2(循环)。如果s为负数,则乘以而不是除。

对于任意的a_ib_i,你仍然会有上溢(当s为负数时)或下溢( s 积极)并且需要对此进行管理。然而,你声称有保证,事实并非如此......

关于c++ - 使用 pow() 进行除法溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32535625/

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