Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >立方体堆体积

立方体堆体积
EN

Stack Overflow用户
提问于 2018-09-08 10:34:27
回答 3查看 3.5K关注 0票数 2

我在尝试挑战。其想法如下:

“你的任务是建造一个由n个立方体组成的建筑,底部的立方体的体积为n^3,上面的立方体的体积为(n-1)^3等等,直到顶部的体积为1^3。 你得到的是这栋建筑的总体积m。如果给m,你能找到你要建的立方体数n吗?如果不存在这样的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开始一个变量,从平方根取这个值(递增)。这些值最终将匹配,否则前一个平方根将变为负值。

所以我写了这段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。

我漏掉了什么明显的东西吗?

EN

回答 3

Stack Overflow用户

发布于 2018-09-08 10:54:54

你遇到了一个浮点精度问题。也就是说,我们有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [101]: (10170290665425347857)**0.5
Out[101]: 3189089316.0

In [102]: ((10170290665425347857)**0.5) % 1
Out[102]: 0.0

所以内部的分支被拿走了,尽管它实际上不是一个正方形:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [103]: int((10170290665425347857)**0.5)**2
Out[103]: 10170290665425347856

如果您从这个问题借用了许多整数平方根选项中的一个,并验证sqrt平方给出了原始数字,那么您应该对算法没有意见,至少如果我没有忽略某个角落的情况。

(旁白:你已经注意到了关键的模式。数字1,3,6,10,15。是非常有名的,并且有自己的公式,您可以用它来求解是否存在这样一个直接工作的数字。)

票数 3
EN

Stack Overflow用户

发布于 2018-09-08 10:45:58

我不知道你的答案是否正确,但我对这个问题有另一个更容易解决的办法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def max_level(remain_volume, currLevel):
    if remain_volume < currLevel ** 3:
        return -1
    if remain_volume == currLevel ** 3:
        return currLevel
    return max_level(remain_volume - currLevel**3, currLevel + 1)

你可以用max_level(m, 0)找到答案。它需要O(n)时间和O(1)内存。

票数 1
EN

Stack Overflow用户

发布于 2018-09-08 11:03:57

DSM的答案是一个,但是加上我的两分钱来改进解决方案.

Brilliant.org中的这个表达式用于对立方体数进行求和:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sum of k**3 from k=1 to n:
    n**2 * (n+1)**2 / 4

这个问题当然可以在所涉及的总量中得到解决。这里是四种解决方案之一(要求n和v都是正的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from math import sqrt

def n(v):
    return 1/2*(sqrt(8*sqrt(v) + 1) - 1)

但是这个函数也返回79863.0。现在,如果我们把所有的立方体数从1加到n,由于精度错误,我们得到了一个稍微不同的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
v = 10170290665425347857
cubes = n(v)    # 79863
x = sum([i**3 for i in range(cubes+1)])

# x = 10170290665425347857, original
x  -> 10170290665425347856
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52238278

复制
相关文章
锋利的JQuery —— Ajax
大图猛戳
用户1154259
2018/01/17
8770
锋利的JQuery —— Ajax
锋利的jQuery系列<一>[通俗易懂]
jQuery是继Prototype之后又一个优秀的JavaScript库,是一个由John Resig创建于06年1月的开源项目。现在的jQuery主要包括核心库、UI、插件和jQuery Mobile这几大模块。
全栈程序员站长
2022/11/15
7130
锋利的JQuery —— 选择器
图片猛戳链接
用户1154259
2018/01/17
7190
锋利的JQuery —— 选择器
锋利的JQuery —— DOM操作
图片猛戳链接
用户1154259
2018/01/17
5480
锋利的JQuery —— DOM操作
锋利的JQuery —— JQuery性能优化
大图猛戳
用户1154259
2018/01/17
7570
锋利的JQuery —— JQuery性能优化
锋利的jQuery第八期
上一期介绍了属性过滤选择器,提到了正则,那这次还是稍微说说吧,首先是不等于,开头以及结尾。原效果图如下:
一头小山猪
2020/04/10
2590
锋利的JQuery —— 事件和动画
大图猛戳
用户1154259
2018/01/17
6460
锋利的JQuery —— 事件和动画
锋利的jQuery第五期
昨日因为大图图文章图片出了点问题所以补更了一期,和大家晚见面了一天,虽然小编今日出差,但还是抓紧时间在机场把推文写好,毕竟,做人做事,安全。。。咳,信誉第一。
一头小山猪
2020/06/15
3340
锋利的jQuery第五期
锋利的jQuery第六期
哈喽,又见面了,最近小编去机房部署大数据集群啦,承蒙校长一路指点,服务器的部署还算顺利,在此道谢了,啦啦啦,今天又到了我们说jQuery的日子,首先,上原始图:
一头小山猪
2020/06/15
3210
锋利的jQuery第六期
锋利的jQuery第三期
经过了前两期的基础铺垫,相信大家对jQuery也有了一定的了解,那么以后的几期将逐个介绍jQuery中的常见用法。
一头小山猪
2020/06/15
4760
锋利的jQuery第三期
锋利的jQuery第四期
经过了十一长假,大家学习的状态怎么样呢?有没有一如既往的保持学习劲头呢?小编在假期去SAE和BAE上面逛了逛,研究了一下微信公众号服务器配置,无奈的是如果启用服务器原来自定义的菜单等应该就暂时报销了。。。所以小编没有下手,所以又花时间去网罗了一些微信小程序的相关教程和资料,说白了就是前端的教程了,然后我们的鹏宇大校长又分享了虚拟机装黑苹果的方法,感觉收益颇丰啊。(如果对C/C++感兴趣的同学可以找鹏宇校长进行业内顶级特训哦)
一头小山猪
2020/06/15
3420
锋利的jQuery第四期
锋利的jQuery第一期
中秋将至,小编先在这里祝大家中秋快乐!公众号在假期期间停更几天,让几位管理好好休息,假期回来火力全开!
一头小山猪
2020/06/15
3490
锋利的jQuery第一期
Flink异步之矛-锋利的Async I/O
在Flink 流处理过程中,经常需要和外部系统进行交互,用维度表补全事实表中的字段。
王知无-import_bigdata
2020/02/10
1.2K0
锋利的jQuery第二期
时隔几天,小朱又和大家见面了,带领大家继续我们的jQuery之旅,上次说到如果jQuery框架与prototype框架同时引用需要处理好控制权的问题,对于这个不常见的问题,小朱就和大家说说jQuery的快捷自定义方式,学会之后处理各种冲突问题就容易多了。操作很简单,只是一个赋值语句,例如:var j = jQuery.noConflict();这样我们就可以把"j."当作"jQuery."来使用,而把有冲突的
一头小山猪
2020/06/16
7660
锋利的jQuery第二期
Flink异步之矛-锋利的Async I/O
在Flink 流处理过程中,经常需要和外部系统进行交互,用维度表补全事实表中的字段。
大数据真好玩
2020/02/11
1.3K0
Flink异步之矛-锋利的Async I/O
Flink 最锋利的武器:Flink SQL 入门和实战
Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言。
王知无-import_bigdata
2019/06/26
18.6K0
Flink 最锋利的武器:Flink SQL 入门和实战
锋利的JQuery学习笔记之JQuery-Ajax的应用
  今天终于看到了最令我兴奋的一章:JQuery与Ajax的应用。AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式应用的网页开发技术。在最初学习Ajax的日子里,我被ASP.NET AJAX框架提供的UpdatePanel迷惑了,以后Ajax就这么简单,所以在最初做的几个项目里,前台代码里必至少有一个UpdatePanel区域,把要局部刷新的内容全放到这个Panel里面,殊不知一个UpdatePanel只适合于局域网的内部信息系统,不适合在前台互联网中使用,这样效率很低。
Edison Zhou
2018/08/20
6970
锋利的JQuery学习笔记之JQuery-Ajax的应用
ASP.NET MVC随想录——锋利的KATANA
正如上篇文章所述那样,OWIN在Web Server与Web Application之间定义了一套规范(Specs),意在解耦Web Server与Web Application, 从而推进跨平台的实现。若要真正使用OWIN规范,那么必须要对他们进行实现。目前有两个产品实现了OWIN规范——由微软主导的 Katana和第三方的Nowin。这篇文章,我主要关注还是Katana,由微软团队主导,开源到CodePlex上。 可以在Visual Studio中输入命令:git clone https://git01
用户1161731
2018/01/11
1.7K0
ASP.NET MVC随想录——锋利的KATANA
Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码
Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言。
AI科技大本营
2019/07/03
20.5K0
Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码
2022产业观察 | 漏洞武器化,成为勒索软件锋利的“矛”
巨量数据泄露、暗网交易猖獗、国家进入紧急状态……这些网络安全事件背后都离不开勒索犯罪集团。2022年,勒索组织的活跃度不亚于往年,LockBit、Conti和Lapsus$三大勒索组织空前活跃,政府网站、医疗业、制造业、金融业等行业饱受勒索软件困扰。
FB客服
2022/11/14
9010
2022产业观察 | 漏洞武器化,成为勒索软件锋利的“矛”

相似问题

向后返回JavaScript子串

23

C++子串使用返回错误

20

Javascript子字符串()从我的字符串返回错误的值?

23

javascript子串

60

返回错误结果的C++子串

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文