【发布时间】:2021-10-10 03:30:11
【问题描述】:
我正在尝试挑战。思路如下:
“你的任务是建造一座由 n 个立方体组成的建筑物。 底部的立方体的体积为 n^3,上面的立方体将 有 (n-1)^3 的体积,依此类推,直到顶部有 1^3 的音量。
给定建筑物的总体积 m。被给予 m 可以 你找到了你必须建造的立方体的数量?如果没有这样的 n 存在返回-1"
我显然看到了:
2³ + 1 = 9 = 3² 和 3 - 1 = 2
3³ + 2³ + 1 = 36 = 6² 和 6 - 3 = 3
4³ + 3³ + 2³ + 1 = 100 = 10² 和 10 - 6 = 4
5³ + 4³ + 3³ + 2³ + 1 = 225 = 15² 和 15 - 10 = 5
6³ + 5³ + 4³ + 3³ + 2³ + 1 = 441 = 21² 和 21 - 15 = 6
所以如果我想,如果我检查某个数字是平方根,我已经可以排除一些。然后我可以从 1 开始一个变量,从平方根中获取该值(增加它)。这些值最终会匹配,否则之前的平方根将变为负数。
所以我写了这段代码:
def find_nb(m):
x = m**0.5
if (x%1==0):
c = 1
while (x != c and x > 0):
x = x - c
c = c + 1
if (x == c):
return c
else:
return -1
return -1
这不应该吗?我错过了什么? 例如,我失败了三分之一的样本集:10170290665425347857 应该是-1,在我的程序中它给出了 79863。
我是否遗漏了一些明显的东西?
【问题讨论】:
标签: python optimization