PE-43(枚举)
来源:互联网 发布:淘宝下单不付钱 编辑:程序博客网 时间:2024/06/06 01:34
题目:https://projecteuler.net/problem=43
分析:数据量不大,一共也就10! = 3628800种排列,枚举即可,这里有几个可以优化的地方:
(1)0不能出现在数字的首位,所以枚举时从1为开头即可
(2)对容易剪枝的条件先判断,例如d2d3d4能被2整除,则d4必须是偶数,这样一半的情况下后面的if都不用算了;对于d4d5d6能被5整除,则d6必须是5或者0,这样后面的if也不用算了
from itertools import permutations as Permutedef AsNumber(lis):n = 0for d in lis:n = n * 10 + dreturn nseq = [1, 0] + list(range(2, 10))res = 0for arr in Permute(seq, 10):if arr[3] & 1:continueif arr[5] != 5 and arr[5] != 0:continueif sum(arr[2:5]) % 3 or AsNumber(arr[4:7]) % 7 or AsNumber(arr[5:8]) % 11 or \ AsNumber(arr[6:9]) % 13 or AsNumber(arr[7:]) % 17:continueres += AsNumber(arr)print(res)
0 0
- PE-43(枚举)
- Windows PE资源表编程(枚举资源树)
- PE 105 Special subset sums: testing (位运算枚举子集)
- PE 106 Special subset sums: meta-testing (位运算枚举子集)
- Windows PE 重定位表编程(枚举重定位地址)
- [VB]枚举 PE 文件里面的资源
- PE格式(一)
- PE文件(一)
- PE文件(二)
- PE文件(三)
- PE 123(数论)
- PE
- PE
- PE
- PE
- PE
- PE
- PE
- MOBA游戏草丛系统的个人思路
- sql优化
- CD4541B定时器的使用方法
- 学习笔记
- 多线程的实现方式和安全性
- PE-43(枚举)
- Uva-12118 Inspector's Dilemma
- uLua bug fix
- rmzanqkw
- 分布式集群管理—认知
- 初步13-坐标转换
- Debian (Jessie 8.0) mysql can't connect to local mysql server through socket '/var/run/mysqld/mysqld
- HDU3461_Code Lock
- 黑马程序员 使用final修饰一个变量时,是引用不能变还是引用对象不能变