【发布时间】:2013-04-12 18:52:40
【问题描述】:
我想找到小于或等于 n 的第 k 个根的最大整数。我试过了
int(n**(1/k))
但是对于 n=125, k=3 这给出了错误的答案!我碰巧知道 5 的立方是 125。
>>> int(125**(1/3))
4
什么是更好的算法?
背景:在 2011 年,这个失误让我击败了 Google Code Jam 问题Expensive Dinner。
【问题讨论】:
-
舍入导致您观察到的结果。在这里,这是因为 1/3 向下舍入。我不知道 Python 的 IEEE754 合规性,但在其他机器上你可以观察到 5。
-
@Alexandre Huh,
125**(1/3)->4.999999999999999
标签: python algorithm math nth-root