我想找到小于或等于n的第k个根的最大整数。我试过了
int(n**(1/k))
但是对于n = 125,k = 3,这给出了错误的答案!我碰巧知道5的立方是125。
>>> int(125**(1/3))
4
有什么更好的算法?
背景:在2011年,这次滑坡使我击败了Google Code
Jam。https://code.google.com/codejam/contest/dashboard?c=1150486#s=p2
一个解决方案首先通过将hi乘以2直到n在lo和hi之间,将lo和hi之间的答案括起来,然后使用二进制搜索来计算确切的答案:
def iroot(k, n):
hi = 1
while pow(hi, k) < n:
hi *= 2
lo = hi // 2
while hi - lo > 1:
mid = (lo + hi) // 2
midToK = pow(mid, k)
if midToK < n:
lo = mid
elif n < midToK:
hi = mid
else:
return mid
if pow(hi, k) == n:
return hi
else:
return lo
一种不同的解决方案使用牛顿方法,该方法在整数上运行良好:
def iroot(k, n):
u, s = n, n+1
while u < s:
s = u
t = (k-1) * s + n // pow(s, k-1)
u = t // k
return s
我想找到小于或等于n的第k个根的最大整数 但是对于n=125,k=3,这给出了错误的答案!我碰巧知道5的立方是125 什么是更好的算法? 背景:2011年,这个失误让我打败了谷歌代码堵塞。https://code.google.com/codejam/contest/dashboard?c=1150486#s=p2
问题内容: 我需要一种方法来计算Python中长整数的第n个根。 我试过了,但是不起作用: OverflowError:long int太大,无法转换为float 有任何想法吗? 长整数是指真正的长整数,例如: 11968003966030964356885611480383408833172346450467339251 1960931441410456834630852911156774884
问题内容: 我指的是以下查询,以找到雇员的Nth最高薪水。 一位先生说,此查询有效。有人可以解释一下如何将COUNT(n等于1到X,其中X是不同工资总额)的值等于&n会产生这个结果吗? 我试图了解数据库如何在内部处理此查询并产生结果? 谢谢你。 问题答案: 首先,查询将返回 最低 薪水值。要返回最高薪水值,您必须更改为。 接下来,此查询的工作方式是:首先找到一个唯一的薪水值列表作为一个派生表,然后
问题内容: 想知道如何编写SQL函数以查找表中的第N个最大元素,如果没有第N个最大元素,则返回Null。 使用MySQL / MySQL工作台。 顺便说一句,我的问题与第N个最高薪水问题不同,因为我还有一个附加要求,如果第N个最大元素不存在,则返回Null。任何想法表示赞赏。 预先感谢林 问题答案: 您可以这样做:
我对这个代码有问题。它应该找到三个数字的GCF,但它在else语句中不断出现错误。
本文向大家介绍n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N) ?相关面试题,主要包含被问及n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N) ?时的应答技巧和注意事项,需要的朋友参考一下