【发布时间】:2019-12-14 14:30:16
【问题描述】:
我一直在尝试解决这个问题:
底部的立方体的体积为 n^3,上面的立方体将 有 (n-1)^3 的体积,依此类推,直到顶部有 1^3 的音量。
给定建筑物的总体积 m。被给予 m 可以 你找到了你必须构建的立方体的数量吗?
这是我的代码
import math
def find_nb(m):
nb = 1
nb_vol = 0
while True:
nb_vol += math.pow(nb, 3)
if (nb_vol == m):
return nb
elif (nb_vol > m):
return -1
nb += 1
现在,当我尝试求解 find_nb(2521115597681328384) 时,它返回 -1,而实际上它应该返回 56352。如果我改变
nb_vol += math.pow(nb, 3)
到
nb_vol += nb ** 3
一切正常。 为什么?
【问题讨论】:
-
@Reznik 这个问题更多地是关于性能而不是正确性。
-
为了完整性去这里检查两个浮点数是否足够接近以被称为相等stackoverflow.com/questions/5595425/…
-
@Anonymous 这个问题本身就回答了这个问题。
标签: python