问题描述
问题陈述 :
建造一栋建筑物,将是一堆n个立方体。 底部的立方体的体积为n ^ 3,上方的立方体的体积为(n-1)^ 3,依此类推,直到顶部的立方体的体积为1 ^ 3。
您将获得建筑物的总体积m。 给定m,您可以找到要构建的多维数据集个数n吗?
函数findNb的参数(find_nb,find-nb,findNb)将是整数m,您必须返回整数n,例如n ^ 3 +(n-1)^ 3 + ... + 1 ^ 3 =如果存在,则为m;如果不存在,则为-1。
下面的代码在数学上是正确的,可以计算正确的值,但是在通过代码战提交时将失败。 该消息表明,如果在其服务器上执行超过12秒,则需要更多优化。 谢谢您的帮助。
def find_nb(m):
# your code
n = int(m**(1./3.))
#print (n)
total_volume = 0
for i in range (1,n+1):
#print (i*i*i)
total_volume+= i*i*i
#print (total_volume)
if(total_volume == m):
#print (i)
return i
break
return -1
1楼
您应该尝试使用一些数学。 通常,k = 1至n的k ^ 3之和为(n(n + 1)/ 2)^ 2。 所以
def find_nb(m):
i=0
while int((i(i+1)/2)**2) < m:
i += 1
if ((i(i+1)/2)^2) == m:
return(i)
return(-1)
这可能不是最佳解决方案,但是您应该尝试一下,因为它可以避免循环。