Project Euler个人解答(Problem 61~70)
本来说好乖乖写论文的。。但是我一无聊,就想找人打麻将,一旦找不到人打麻将。。我就去刷Euler题,然后刷着刷着。。。有人我搞出10道题了。。。好,这次说好了。。。乖乖写论文。。。而且我已经预感到后面的题好像继续变难了。。所以决定论文写完之前,不再碰Euler题了。。。再做剁手! 阅读全文…
本来说好乖乖写论文的。。但是我一无聊,就想找人打麻将,一旦找不到人打麻将。。我就去刷Euler题,然后刷着刷着。。。有人我搞出10道题了。。。好,这次说好了。。。乖乖写论文。。。而且我已经预感到后面的题好像继续变难了。。所以决定论文写完之前,不再碰Euler题了。。。再做剁手! 阅读全文…
好了,这一篇总算写完了。。。其实这一P里面就第一题和最后一题比较难,其他都没花什么时间。。
总而言之,言而总之,最近先不更这个了,因为更一个这个好他喵的花时间啊。。所以@saya,你就先慢慢看前面的吧。。
接下来我要好好在寒假之前把论文给搞定,然后安心坐等毕业,走向人生巅峰!!想想还有点小激动? 阅读全文…
哟西~好的,这一P弄完,就把EP上第一页的题目全部搞完了~
这一P开始有个很明显的迹象就是。。。Python完成的任务逐渐增多,而Mathematica慢慢变少。。
其实也不是说Mathematica完成不了,只是确实有些问题用Mma来完成不能体现Mma的魅力!!而且我在想算法的时候,只要想到代码里面会有for语句什么的,我就会本能地打开Python;【C++比较繁琐,Matlab?for语句不是开玩笑的!!】不过如果涉及到字符串比较复杂的操作,或者分解质因数这一类比较数学的题目,不管怎么样,还是Mma走起吧。。话说Mma和Python在Euler Project上语言分数排名上是第二和第三诶。。
毕竟只要复杂度不是太恐怖或者算法太烂,还用不上C++这个最终兵器。。不过估计之后的趋势会变成,C++逐渐比重增加。。。这就当一个预言吧。。
到了这里,发现需要积累一些常用函数了,目前为止这里用个最多的几个就是Python生成器输出全排列,判断是否是质数,生成指定范围内的质数表这几个。
阅读全文…
嗯~总算搞完了,其实发现复习以前做过的题也挺有意思的,至少很多题我现在拿来写博客的时候就会静下心来想会不会有更高的方法呢~什么的。。。【其实我才不会告诉你中间有几题我以前的代码找不到了,现在被迫重写。。】
嘛~第四弹,离赶上我自己原有进度还有两弹~而且现在博文这里不写完实在不好意思去EP上刷题。。。
题目这里开始明显和前面有难度上的分界线了,但是虽然这么说,但是这10道题目顶多还是只能称之为值得讨论研究,还不能算难。。只要你多思考一点点,就可以让你的程序结果很快的跑出来,因为这里开始题目暴搜解法已经开始表示吃紧了。。 阅读全文…
我的渺小的愿望就是在有生之年赶上官网进度的80%。。。。
题目翻译摘自Project Euler 中文翻译站
Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).
If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.
Evaluate the sum of all the amicable numbers under 10000.
好吧,继续来水第二篇,其实我已经做了60+道题了,但是我决定,还是把这边的进度赶完,再继续去那边刷题,不然总感觉现在放下这个坑去刷题有种奇怪的不协调感。。。
哦,说一句吧,这边只提供我的代码,我是不会直接把答案贴上来的。。せめて也要让你自己去跑一下程序的是吧~
11-20这10道题总体上不好玩,因为都是可以大量用软件自带的各种函数来计算了。。。好吧,其实不是Mathematica和Python的错。。
题目翻译摘自Project Euler 中文翻译站
In the 2020 grid below, four numbers along a diagonal line have been marked in red.
阅读全文…
毅然决然决定开这个坑!!好吧,本文主要为个人做笔记用,也可以方便大家交流,但是做题时为了节省时间,代码写得有些乱,思路有时也比较粗暴,方法和变量命名请不要吐槽。。我看过讨论版上有很多精彩的方法,但是这里只做一个自己的笔记用而已!!
题目翻译摘自Project Euler 中文翻译站,特此感谢,虽然我做题的时候都是看英文的。。
另外,题目里面有些数学上的东西,比如说平方那些,我就懒得修改了。。看得懂就行。
再另外,虽然我一般的习惯是不分P来写博客,也就是说一个主题就开一篇,比如我以前写的所有的笔记性质的博客,全是一篇超长的,但是有人跟我说这样看起来挺累的,所以我也就决定分一下P,正好博客搬家,水一下数量给搜索引擎看。。。而且,被我搞到现在每一道题的解答的格式有点复杂,所以也是为了保险起见,我还是分一下P吧,不然哪一天WP抽风了,一打开修改后全部格式全乱了就神作了。。。老师教导我们,鸡蛋不要放在一个篮子里!!
前言部分就这么多吧~每10题1P,前面30到40题都是超级简单的。。。 阅读全文…
题目来源还是是Euler Project,之前官方连续公布了三道类似的题目,都是基于一种叫做Retraction数的东西,它的定义是:
对于所有整数\(n>1\),定义一族函数\(f_{n,a,b}(x)=mod(ax+b,n)\),\(x,a,b\)均为整数,且满足0<\(n\)<\(a\),\(0\leq b < n\),\(0\leq x < n\)
如果对所有\(x\)均有:\(f_{n,a,b}(f_{n,a,b}(x))=mod(f_{n,a,b}(x),n)\)
那么,我们管\(f_{n,a,b}(x)=mod(ax+b,n)\)叫做一个Retraction;
我们需要计算的是\(R(n)\),定义为包含\(n\)的Retraction的个数。
上周开始一直在Euler Project上面刷题,玩得不亦乐乎,那种面对千奇百怪的问题,可以用自己手边的各种工具来“玩弄”的感觉真是让人欲罢不能,其实手头上也就4套工具,C++,Python,Matlab,Mathematica,主要用得最多的也就Mathematica,Python。
好吧,讲正事,上周遇到一道题,可算把我两天给送进去了。。。。
题目链接可以参见这里,翻译过来是这样的:
我开始用python试测了一下这个暴算的复杂度,直接跪了,所以我马上转战C++。。
首先我们可以根据题目表面要求写出第一套可以预知不可能成功的程序: 阅读全文…