|
发表于 2017-1-13 16:10:40
|
显示全部楼层
- # encoding:utf-8
- # pandigital 之和
- from time import time
- def isDup(N):
- if str(N).find('0') > -1 :
- return False
- if len(str(N)) == len(set(str(N))):
- return True
- return False
- def isPanDigital(n1, n2, n3):
- l_t = []
- l_t.extend(list(str(n1)))
- l_t.extend(list(str(n2)))
- l_t.extend(list(str(n3)))
- l_t = set(l_t)
- if len(l_t) == 9:
- return True
- return False
- def euler032():
- l_result = []
- for i in range(1, 10):
- for j in range(1234, 9877):
- if isDup(j):
- k = i * j
- if k > 9876:
- break
- if isDup(k):
- if isPanDigital(i, j, k):
- #print(i, j, k)
- l_result.append(k)
- for i in range(12, 99):
- for j in range(123, 988):
- if isDup(j):
- k = i * j
- if k > 9876:
- break
- if isDup(k):
- if isPanDigital(i, j, k):
- #print(i, j, k)
- l_result.append(k)
- print(sum(set(l_result)))
- if __name__ == '__main__':
- start = time()
- # print(isDup(121))
- euler032()
- print('cost %.6f sec' % (time() - start))
复制代码
45228
cost 0.078008 sec
|
|