Project Euler
lushl9301
这个作者很懒,什么都没留下…
展开
-
Project Euler 12
md...这么一道水题……我不仅放了很久才来写……而且还写了很久……不行了……真是水平差了很多了……#include intmain(){ int count = 1; int i = 70; while (count<500) { count = 1; int div = 2; int now = (i+1)*i/2;原创 2012-10-24 13:19:48 · 234 阅读 · 0 评论 -
Project Euler 11
最近一直在看pointers on c 然后……说实话……写python多了,真心懒得写c~但我很喜欢c啊~所以这不……写的很丑的一个c出炉了……#include int main(){ int a[20][20]; FILE *fd = NULL; fd = fopen("pe11.in", "rw+"); int i,原创 2012-10-23 14:10:18 · 299 阅读 · 0 评论 -
Project Euler 13 first try
为了练习指针……准备用指针写高精度,嗯……虽然写对了,但是改了好久~最重要的问题是,题目看错了……所以我准备用python写这一题……原来是50位的数字……我就说1500digits怎么表述那么复杂!……#include #include typedef struct NODE{ struct NODE *link; int value;} No原创 2012-10-26 17:30:38 · 377 阅读 · 0 评论 -
Project Euler 13 second try
我就不说话了……python的强大……当初要是NOI,NOIP让用python……sum = 0fd = open('pe13.in', 'r')for i in range(100): line = fd.readline() now = int(line) sum += now;print(sum)不过难道我以后高精度都用python来写么……原创 2012-10-26 18:27:26 · 207 阅读 · 0 评论 -
Project Euler 16
果然本来很难的一道题……成了one-liner race……看到这个题的第一眼……我就心中对python提起了万分崇敬……于是一行代码出来了……sum(ord(i)-48 for i in list(str(2**10000)))看了一下forum,大家各种奇葩……这个python的似乎也挺好reduce(lambda x, y: x + y, [int(i)原创 2012-11-06 21:45:41 · 452 阅读 · 0 评论 -
Project Euler 18
又图样了……写个动态转移方程还写错了……数组忘了清零,文件操作忘记了……加红!警示自己~现在不用了~咩~#include intmain(){ FILE *fp = NULL; fp = fopen("pe18.in", "rw+"); int i, j, max; int a[15][15]; for (i=0;i<15;i++原创 2012-11-07 11:38:59 · 317 阅读 · 0 评论 -
Project Euler 23
怎么国内做project euler的人是不是很少……都木有人来看我写的……哎~无所谓~反正我这水品~闲的时候自娱自乐就好~这题提到了3种数:perfect numberdeficient numberabundant number应该不难看懂,然后捏,就是暴力了……因为我之前算错了一个地方……于是换用另外一个方法做……总共两种…原创 2012-11-10 16:32:15 · 416 阅读 · 0 评论 -
Project Euler 25
终于到了第25题了……第一阶段完成了~话说……我还是用的python……说程序员用了python就会变懒……还真是事实……a = b = 1t = 2while True: b, a= a+b, b; t +=1 if len(str(b))>=1000: print(t) breakFibonacci sequence……我还有什么好说的呢…原创 2012-11-13 21:25:39 · 453 阅读 · 0 评论 -
Project Euler 27
木哈哈~咩哈哈~终于写出了一个经过深思熟虑才写出的代码~好久没有这种感觉了!!题目大意就是欧拉大神找到这样一个公式,n^2+n+41, 这个公式的神奇之处在于,n in range(0, 40) 满足return的value全都是prime这个非常神奇,真心不知道他怎么算的……题目还给出了另外一个公式,n^2-79n+1601, 这也是神奇公式,n in r原创 2012-11-17 14:49:17 · 313 阅读 · 0 评论 -
Project Euler 29
这道题我是用数学方法做的……手算的~我承认是从答案推导了验证了手算答案的正确性……显然这道题就是用剔除的方法。显然2的出现有2^2,2^3,2^4,...,2^1003的先跳过,看4的4 = 2^2,出现了2^4,2^6,2^8,...,2^200,其中有多少是和2的重复呢?显然是100/2 - 2 +1100/2是再算偶数个数,(-2+1)是因为从原创 2012-11-20 16:52:02 · 478 阅读 · 0 评论 -
Project Euler 31
本次竟然成功做出一道动态规划题……当然……这没什么好兴奋的……期间过程中竟然还出现了很严重的后效性……无妨无妨~上代码!哎~真是挺开心的~#include intmain(){ int i, j, k; int coin[8] = {1,2,5,10,20,50,100,200}; int f[210]; for (i=0; i<210; i++)原创 2012-11-22 22:30:23 · 412 阅读 · 0 评论 -
Project Euler 59
其实突然觉得这个字号大小正好~这道题,有点意思。关于解密码的。题目内容简单说说,用三个字母来作为key,对一小篇文章进行加密。那么关键点就在于找关键字,很多人说:找“the”,这的确很好。但我觉得还有一个比较不错的的方法——找“e”。也就是出现频率最多的字母。找的方法很简单吧。统计,枚举就行。#include intmain()原创 2012-12-20 12:03:34 · 883 阅读 · 1 评论 -
Project Euler 58
很遗憾……很久没有来写程序了……不仅没有写,即便写了……还是用的python……想安慰自己说,用什么语言无所谓,只要回了算法什么的就好……但我还是没看出好来……def prime(n): a = [1 for i in range(n)] a[0], a[1], a[2] = 0, 0, 1 pl = [] t = s = 0 for i in ran原创 2012-12-20 10:38:30 · 347 阅读 · 0 评论 -
Project Euler 15
1003 lab quiz2 is on his damn way.... shit...must finish quickly.this problem is easy. and again I am silly.f = [[0 for i in range(21)] for j in range(21)]f[0][0] = 1for i in range(0原创 2012-11-06 09:47:15 · 215 阅读 · 0 评论 -
Project Euler 19
几分钟应该解决的小问题……我依旧做了很久……算了……告诉自己慢慢来~这次犯的错误题目数据看错了 1900年写成了1999年……额……我把c里面的 = 和 == 再次使用混乱……第二个错误真是不可饶恕……#include intleap(year){ if ((year % 100 == 0) && (year % 400 == 0))原创 2012-11-07 12:36:28 · 449 阅读 · 0 评论 -
Project Euler 22
这题真拿c写的话……真是好……可以自己写快排,练练指针;可以自己写文件读入,练练字符串文件输入;……;可是以上两个我都不会……擦……于是……果断无耻的python了……直接上代码……话说这里借鉴了一个谁谁谁的enumerate的用法~嗯……不难~def calculate_name_score(name, n): name_原创 2012-11-10 16:17:50 · 285 阅读 · 0 评论 -
Project Euler 24
这题边算边写~ ^ ^这个全排列第几个的问题,以前曾经做过~当时的确是懂了~不过忘了之后……又重新自己思考了一遍~算法还是一样的~因为只有100,000 我决定用手和计算器算~不编程了~首先,0~9 10个数的全排列总共有 10! 个, 那就是3628800个(肯定大于1000 000的)我们需要看一下9个数的全排列,2*362 880以0开头的原创 2012-11-11 20:27:08 · 285 阅读 · 0 评论 -
Project Euler 30
变量不初始化,害死人啊哎……又是上述错误……这道题……咳……正规做法本是迭代加深DFS……可惜可惜……直接暴力即可解决……而且我的迭代加深DFS也纯属瞎尝试……上代码吧……虽然是错的……没出结果……#include #include #include int eqArr[7];intcheck(int sum, int len){原创 2012-11-22 21:49:38 · 343 阅读 · 0 评论 -
Project Euler 40
纯手算啊……小半张A4纸,应该不是很难,简单说下步骤首先第一个是1len==1:总共9个,总长度9 10-9 = 1 这个很好看出来1100 - 9 = 91 这个是求第100个位,那就是由长度等于2的数连接,第91位。 91/2 = 45 ··· 1 所以是(45+10)后面的数55的第一位 5len==2:总共90个,总长度180 1000-180-9 = 811原创 2012-11-26 16:44:07 · 406 阅读 · 0 评论 -
Project Euler 41
这题……诚实的说,我事先瞄了一眼答案……所以……依旧还是暴力枚举……看有人有lambda……又觉得自己弱爆了……代码……def sss(n): a = [1 for i in range(n)] a[0], a[1], a[2] = 0, 0, 1 pl = [] t = s = 0 for i in range(2,n): if a[i]: s+=i原创 2012-11-26 22:35:55 · 340 阅读 · 0 评论 -
Project Euler 51
这题……终于遇到让我非常困惑的题了……因为这道题不能让我找到一个效率高的处理方式……只能说,自己对python,或者对C还是不够熟练……简单地说,我用的还是迭代加深搜索,枚举替换的位数(*的个数),搜索出所有可能的位置组合。然后用0~9换进去,检查是否是prime听上去挺简单,写起来却挺麻烦……import sysimport date原创 2012-11-30 17:29:36 · 695 阅读 · 0 评论 -
Project Euler 53
哈哈~杨辉三角这种做了又做的题还是比较简单的啦!这里面有个小细节,倘若当前的加和大于1 million,那么就把这个数设成1 million~防止之后和会溢出(其实我没算……不知道会不会溢出……)#include intmain(){ int f[101][102]; int i, j; for (i=0; i<101; i++) { f[i][原创 2012-11-30 18:59:37 · 546 阅读 · 0 评论 -
Project Euler 55
不知道pe54从何下手,于是先放一下……真是伤感……这道题,本来想用C来解决……但是突然想到,一个数加啊加,加啊加……很容易就超过2^31……好吧……只好用python了……迅速解决战斗,一次AC~yeah!def is_palindrome(n): if list(str(n)) == list(reversed(list(str(n)))): return原创 2012-12-02 17:06:55 · 315 阅读 · 0 评论 -
Project Euler 32
其实今天期末第一天……不宜做题的……但是由于今晚dota过猛……小鱼人杀得太爽了……所以……其实这道题……蛮简单的……看了题目,我就想,似乎很难,结果前面多少题的经验果然是……直接暴力……好么……我真是够暴力……而且……一道小水题……真心不喜欢这样的题啊~为了题数……来吧……这个题,让我怀想起了周恒当年教我们的“百钱买百鸡”问题。时隔多年原创 2012-11-24 00:03:58 · 304 阅读 · 0 评论 -
Project Euler 33
这题挺简单~枚举……依旧暴力不得不说……我开始怀疑欧拉计划的题目难度了……哎~前面的都是给初中生做的……吧……犯的错误有#include 比较float的数,用了abs……而实际上应该用fabs,罪过罪过……比较float是否相等,用fabs(a-b)结果我写了1e-10……导致了精度太高……一些正确答案被排除了……shit……#include #include i原创 2012-11-24 21:32:39 · 390 阅读 · 0 评论 -
Project Euler 34
看着道题AC人数这么多……肯定很水……然后就有信心做了……呵呵……这题应该无压力……暴力#include intcalcFactorial(int n){ int fac=1; for (; n>1; n--) fac *= n; return fac;}intmain(){ int i, x; int ans=0, sum; for (i原创 2012-11-24 21:40:55 · 268 阅读 · 0 评论 -
Project Euler 57
我实在是想吐槽python了……= =其实是吐槽自己……python太过强大,以至于现在很少想一起一样,仔细考虑数据范围……导致今天……非常惨烈的arithmetic overflow……C啊……C啊……说说解题方法吧,那就是模拟计算那个公式的步骤,从中心开始向外扩就好了~#include int toggle(int *x, int *y){原创 2012-12-02 20:44:43 · 273 阅读 · 0 评论 -
Project Euler 14
这题太不科学了……可能是因为我对c了解还不够……用了记忆化搜索……先是递归(图样图森破)显然是栈不够深,随后转为普通while flow control, 这个明明是正确的解法啊……结果经常在mingw下停止工作,目测也是越界什么错误的……ide有时候会很有用的~可惜我目前还算是不想用,在linux下编程是有时会方便……但我今天本来没想编程的……原创 2012-11-03 11:51:28 · 376 阅读 · 0 评论 -
Project Euler 17
今天木有好好复习……还有20天考试……心里还是挺慌的……好吧~这道题蛋碎,考英语~嗯……本来我在笨笨的一点一点写……直到我膝盖中了一箭,觉得这样写下去实在是太二逼了……算了~上网简单看一下。还是jason大牛的……import time start = time.time() S = [0,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,原创 2012-11-06 22:46:49 · 791 阅读 · 1 评论 -
Project Euler 21
这个问题虽然放了挺久……但是似乎是挺简单的~我曾经想过有没有什么高效算法,但最后没有想出来……呵呵……看了一下forum,似乎做法都差不多……硬算~上一下我的code#include intmain(){ int i = 0, now, j; int sum = 0; int f[10000]; for (i=1; i<10000原创 2012-11-09 18:57:34 · 327 阅读 · 0 评论 -
Project Euler 20
其实我还是想写one line……为了快速解决……忍住了……ans = 1for i in range(1, 100): ans *= iprint(sum([int(i) for i in list(str(ans))]))这里本来想上一下one line python结果发现似乎是python2……又用了lambda~嗯……我自己写写试试想了一下,不好写~原创 2012-11-07 23:08:36 · 530 阅读 · 0 评论 -
Project Euler 26
大早上起来……做题折磨自己~下午还有quiz……T_T好,这道题是要求d然后想啊想,就是想不出来……就百度了一下最长循环节……竟然出来了这道题的讨论……这不科学……不过里面推荐了有关循环小数的趣味数学题好东西啊!我看到里面最让我感动的两句话一是关于分母中含有2,5这两个因子,那么小数要么不是循环小数(只含2,5),要么就是混合无限循环小数(2,5和其他素原创 2012-11-15 09:57:55 · 644 阅读 · 0 评论 -
Project Euler 28
这道题……看上去挺唬人……其实解法很多,数学或者暴力随你……我算是半数学吧……没大用公式,都是按照差来算的……sum_up = 25last_max = 9 #last_max is the previous circle's largest one. on the up-right corner.base = 25 #base is the base di原创 2012-11-17 15:53:52 · 306 阅读 · 0 评论 -
Project Euler 35
本来是,用C用多了,看到python就感到微微头疼……不知道为啥……可能是build_in function太多了?但是考试考python啊!所以这题用python写了……其实用C写不会难的……首先……读错题了……简直是大错特错……本题是要求不断地shift,看看是否都是prime我第一次看成了,要reverse,这个错了……第二次看成了,要原创 2012-11-25 21:53:26 · 431 阅读 · 0 评论 -
Project Euler 44
这道题真是遇到问题了……果然……我写的慢了,超时了……TLE……好久没用这词了~注意……这个超时,是指超过了1min……擦……题目很简单,就是让你找最小的D出来~哎……python的in操作我估计是很慢的……因为根本不知道你的list是否有序,那么就一个一个找吧……def main(): min = 2147483647 p = [n*(3*n-1)//2原创 2012-11-27 22:57:53 · 1098 阅读 · 0 评论 -
Project Euler 45
这道题跟44还是有关系的~44有一种说法我没有提到,那就是直接判断一个数是不是pentagonal number。嗯……这种方法见wikipedia……具体推论方法……目测也是简单的把那个常数通过乘法变成完全平方神马的,然后开方,除法去掉。import mathdef is_triangle(n): x = int((math.sqrt(8*n+1)-1)//原创 2012-11-27 23:46:06 · 360 阅读 · 0 评论 -
Project Euler 56
这道题还是比较简单的~本来想用快速幂……练习一下~结果上来先用python找到正确答案,就懒得想快速幂……毕竟高精乘不是那么简单的吧……先来个高精练练吧……上,两份代码~嘻嘻~def main(): maximun = xa = xb = 0 for a in range(1, 100): for b in range(1, 100): sum_up =原创 2012-12-02 18:12:28 · 282 阅读 · 0 评论 -
Project Euler 52
本来这题是在51之前完成的……但是为了保持队形……这题简单,就使用set,可以简单明了的解决问题~嗯……我觉得今后的题目该用回C了……这段时间狂用Python是因为考试要考,防止自己忘了Syntax……结果python考的还不咋地……被一个LEGB搞懵了……Short Description of Python Scoping Rules我是真心不知道怎么解原创 2012-11-30 17:37:31 · 380 阅读 · 0 评论 -
Project Euler 36
我发现一个问题……像我这种没人看的blog,一般是写得越长,阅读人数越多……这似乎……算了……管他科不科学……这道题是要 求在一百万以内,十进制二进制都是回文数的数之和。生成回文数的方法就是枚举一半然后倒序拼接(这个拼接的地方,用了python的很多基础内置函数,我感觉非常不简练……但是有时候懒得想太多了……python就是让人变得懒惰)上代码def con原创 2012-11-26 12:54:29 · 290 阅读 · 0 评论 -
Project Euler 37
这几题为毛线都是prime……嗯……这题也不难,直接数出来素数,枚举……def sss(n): a = [1 for i in range(n)] a[0], a[1], a[2] = 0, 0, 1 pl = [] t = s = 0 for i in range(2,n): if a[i]: s+=i pl.append(i) j=i*i原创 2012-11-26 15:13:36 · 346 阅读 · 0 评论