1 Star 0 Fork 0

阿坚/projecteuler

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
p043.py 8.01 KB
一键复制 编辑 原始数据 按行查看 历史
阿坚 提交于 2022-05-14 13:25 . 44 undone
"""
Problem 43: https://projecteuler.net/problem=43
The number, 1406357289, is a 0 to 9 pandigital number because it is made up of
each of the digits 0 to 9 in some order, but it also has a rather interesting
sub-string divisibility property.
Let d1 be the 1st digit, d2 be the 2nd digit, and so on. In this way, we note
the following:
d2d3d4=406 is divisible by 2
d3d4d5=063 is divisible by 3
d4d5d6=635 is divisible by 5
d5d6d7=357 is divisible by 7
d6d7d8=572 is divisible by 11
d7d8d9=728 is divisible by 13
d8d9d10=289 is divisible by 17
Find the sum of all 0 to 9 pandigital numbers with this property.
"""
# _*_ conding:UTF-8 _*_
'''
@author = Kuperain
@email = kuperain@aliyun.com
@IDE = VSCODE Python3.8.3
@creat_time = 2022/5/14
'''
import itertools
def solution() -> int:
pandigitalnumbers = itertools.permutations((range(10)))
res = 0
for d in pandigitalnumbers:
if d[0] != 0 and (
d[3] % 2 == 0) and (
(d[2]+d[3]+d[4]) % 3 == 0) and (
d[5] == 0 or d[5] == 5) and (
(100*d[4]+10*d[5]+d[6]) % 7 == 0) and (
(d[5]-d[6]+d[7]) % 11 == 0) and (
(100*d[6]+10*d[7]+d[8]) % 13 == 0) and (
(100*d[7]+10*d[8]+d[9]) % 17 == 0):
print(d)
res += int(''.join(map(str, d)))
return res
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=False)
print(solution())
# 16695334890
'''
(1, 4, 0, 6, 3, 5, 7, 2, 8, 9)
(1, 4, 3, 0, 9, 5, 2, 8, 6, 7)
(1, 4, 6, 0, 3, 5, 7, 2, 8, 9)
(4, 1, 0, 6, 3, 5, 7, 2, 8, 9)
(4, 1, 3, 0, 9, 5, 2, 8, 6, 7)
(4, 1, 6, 0, 3, 5, 7, 2, 8, 9)
'''
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/kuperain/projecteuler.git
git@gitee.com:kuperain/projecteuler.git
kuperain
projecteuler
projecteuler
master

搜索帮助