我正在尝试解决以下问题: 你的任务是建造一座由n个立方体组成的建筑。底部的立方体体积为n^3,上面的立方体体积为(n-1)^3,依此类推,直到顶部的立方体体积为1^3
您将获得建筑物的总体积m。给定m,你能找到你需要构建的多维数据集的数量n吗
函数findNb(find_nb,find nb,findNb)的参数将是一个整数m,如果存在这样的n,则必须返回整数n,如n^3 + (n-1)^3 + ... + 1^3 = m
,如果不存在这样的n,则返回-1
示例:
findNb(1071225) --> 45
findNb(91716553919377) --> -1
这是我的密码:
def find_Nb(m):
n = 1
while n <= m // 2:
total_n = 0
for i in range(0, n):
total_n += (n - i) ** 3
n += 1
if total_n == m:
return n
break
else:
return -1
出于某种原因,在total_n==m的情况下,输出产生(n+1)。 例如,如果我们做m=100,输出应该是4;但是上面的代码产生5个;知道为什么吗
或者根据示例,当我在代码中运行m=1071225时,我应该得到45的输出,但我的代码生成46
这是我写的代码,它可以工作,但当我第一次尝试它时,我遇到了与您相同的问题。我修正了它,把n=I放在I+=1之前,这样n就有了正确的值,所以我想你也必须在说n+=1之前复制n,然后返回这个值
相关问题 更多 >
编程相关推荐