
ProjectEuler
还有多远
这个作者很懒,什么都没留下…
展开
-
PE2-Even Fibonacci numbers
题目:https://projecteuler.net/archives 思路:题目不难,可以用来练练python,求出四百万以内所有偶数斐波那契数的和,数据范围不大,很容易想到依次产生4*10^6以内的所有数,遇到偶数就加上,由于递推到斐波那契数N的只需要O(log2(N))步,所以30步以内我们就能得到结果 limit = 4 * 10**6 total = 0 a, b = 1,原创 2015-09-09 00:43:27 · 389 阅读 · 0 评论 -
PE-43(枚举)
题目:https://projecteuler.net/problem=43 分析:数据量不大,一共也就10! = 3628800种排列,枚举即可,这里有几个可以优化的地方: (1)0不能出现在数字的首位,所以枚举时从1为开头即可 (2)对容易剪枝的条件先判断,例如d2d3d4能被2整除,则d4必须是偶数,这样一半的情况下后面的if都不用算了;对于d4d5d6能被5整除,则d6必须是5或者0原创 2015-09-10 00:58:56 · 492 阅读 · 0 评论 -
PE49-Prime permutations
题目:https://projecteuler.net/problem=49 思路:题目数据范围不大,直接找出全部的4位数素数,以四位素数的最小permutation为key建立hash,再从中找出差为3330的等差数列即可 def findArithmeticProgression(arr, dif): for x in arr: if x + dif in arr and x + d原创 2015-09-09 01:26:40 · 393 阅读 · 0 评论 -
PE32-Pandigital products
题目:https://projecteuler.net/problem=32 题意:求所有满足如下条件的数z的和:z能分解成两个数x、y的积,且x、y、z中的digits刚好是1~9各出现一次 分析:1~9的permutation总共也就362880,对其枚举即可,这里有一个重要的剪枝:x末位 * y末位 % 10如果不等于z的末位,则继续下一次枚举,实测发现加上这一剪枝比不加的情况快1倍多原创 2015-09-09 02:11:17 · 470 阅读 · 0 评论