当前位置: 代码迷 >> python >> python优化简介
  详细解决方案

python优化简介

热度:89   发布时间:2023-07-14 09:49:52.0

问题陈述 :

建造一栋建筑物,将是一堆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

您应该尝试使用一些数学。 通常,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)

这可能不是最佳解决方案,但是您应该尝试一下,因为它可以避免循环。