我卡在了欧拉计划 problem 338 .这是我到目前为止所做的...
让我们用宽度和高度分别表示 x 和 y (x,y) 来表示一个矩形。要形成新的矩形,您可以考虑沿着对角线切割一种阶梯(如问题描述中所示),阶梯为 d。但要形成一个新的矩形,必须满足以下条件:d|x 和 (d-1)|y 或 (d+1)|y。然后新矩形变为 (x/d*(d-1), y/(d-1)*d) 或 (x/d*(d+1), y/(d+1)*d)。很明显,新矩形的面积与旧矩形的面积相同。
通过遍历所有相关的 d 并将所有新矩形添加到集合中,这足以确认 G(10)=55 和 G(1000)=971745注意只计算一次 (x,y) 和 (y,x)。
此方法的主要问题是可以用两种不同的方式制作新的矩形。例如,(9,8) 可以转换为 (6,12) 和 (12,6) 且 d= 3 和 d-1 或 d+1 除以 y。或者 (4,4) 转换为 (2,8) 和 (8,2) 的另一个示例,其中 d= 2 和 d=1 分别。
然后我很幸运地阅读了this blog post .它消除了通过搜索其中一侧来检查重复项的需要。
def F(w, h):
if w&1 and h&1: return 0
if w<h: w,h = h,w
r = 0
x = 1
while x**2 <= w*h:
if (w*h)%x!=0 or x==h:
x += 1
continue
if w%(w-x)==0 or x%(x-h)==0:
r += 1
x += 1
return r
def G(N):
s = 0
for w in range(1, N+1):
for h in range(1, w+1):
s += F(w,h)
return s
G(1012) 无论 F 有多快都需要很长时间才能解决。我认为有必要使用某种筛选算法,我们循环遍历所有 x <>12 计算有多少 (w,h) 满足 h <= w="">=><=>=>12, x|(w*h), x != h and (w-x)|w or (x-h)|x.
我认为 O(n2/3) 算法一定是可行的……但我被困在这里了!
编辑:我无法访问论坛,因为我无法解决它。这就是我寻求帮助的原因。我已经完成了大多数其他问题,现在想解决这个问题!
编辑 2:我认为按主要因素考虑区域是死胡同。那是因为有 1024 个不同的区域。具有质数区域的矩形有 0 个解,如果其中一个质数为 2,则具有半质数区域的矩形有 1 个解,否则它们有 0 个解。但是单独计算所有半素数解会花费太长时间,因为我们需要计算所有素数 p 使得 2*p <>24 这是不可行的。
编辑 3:我已经精简了代码:
def G(N):
s = 0
for x in range(1, N):
for h in range(1, N+1):
if x==h: continue
for w in range(max(h, x**2//h), N+1):
if (w*h)%x==0 and x%(w-x)==0 and x%(x-h)==0:
s -= 1
for x in range(1, N):
for h in range(1, N+1):
if x==h: continue
for w in range(max(h, x**2//h), N+1):
if (w*h)%x==0 and w%(w-x)==0:
s += 1
for x in range(1, N):
for h in range(1, N+1):
if x==h: continue
for w in range(max(h, x**2//h), N+1):
if (w*h)%x==0 and h%(x-h)==0:
s += 1
return s
我不认为破解暴力破解代码会奏效。请记住,我们只需计算这三个子问题的解 (x, w, h) 就足够了。最后这样的求和将具有约束条件 0 < x="">< n,="" 0="">< h="">< n+1,="" x!="h," max(h,="">2/h) < w="">< n+1,="" x|wh="" 和="">
我认为我们应该从一些素数 p 整除 x、w、h 甚至 x-h 的假设开始,然后看看我们可以从其他变量中推断出什么。如果效果很好,可以考虑 pk 任意 k。
最佳答案
我还没有解决方案,但对 Python 来说很有趣。我意识到 Python 可以用作算法符号的便捷工具!基本上我写下了一个类似于你的程序,并开始逻辑地转换程序,结果不变。我想到了
def order(x,y):
if x>=y:
return (x,y)
else:
return (y,x)
N=1000
num=set()
for n in range(1, N+1):
for a in range(1,N//n+1):
for b in range(1,N//(n+1)+1):
if a==b: continue
num.add((order(a*n,b*(n+1)), order(b*n,a*(n+1))))
print(N, len(num))
显然,蛮力甚至超过 10^12 的简单循环都是不可行的,但也许使用这种算法,人们可以在某个时候找到一个封闭形式的表达式。如果不是 num 的集合字符,它是可行的。也许这样可以找到重复点。
这可能是一个死胡同,但 Python 可以用于符号和算法仍然很酷 :)
你这边有什么进展吗?
关于python - 欧拉计划数 338,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7223392/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem
是否可以在PyYAML或Ruby的Psych引擎中禁用创建anchor和引用(并有效地显式列出冗余数据)?也许我在网上搜索时遗漏了一些东西,但在Psych中似乎没有太多可用的选项,而且我也无法确定PyYAML是否允许这样做.基本原理是我必须序列化一些数据并将其以可读的形式传递给一个不是真正的技术同事进行手动验证。有些数据是多余的,但我需要以最明确的方式列出它们以提高可读性(anchor和引用是提高效率的好概念,但不是人类可读性)。Ruby和Python是我选择的工具,但如果有其他一些相当简单的方法来“展开”YAML文档,它可能就可以了。 最佳答案
我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth