鱼C论坛

 找回密码
 立即注册
查看: 5842|回复: 16

题目32:找出所有能写成 pandigital 数字乘积的数字之和

[复制链接]
发表于 2017-1-13 16:10:40 | 显示全部楼层
  1. # encoding:utf-8
  2. # pandigital 之和
  3. from time import time
  4. def isDup(N):
  5.     if str(N).find('0') > -1 :
  6.         return False
  7.     if len(str(N)) == len(set(str(N))):
  8.         return True
  9.     return False
  10. def isPanDigital(n1, n2, n3):
  11.     l_t = []
  12.     l_t.extend(list(str(n1)))
  13.     l_t.extend(list(str(n2)))
  14.     l_t.extend(list(str(n3)))
  15.     l_t = set(l_t)
  16.     if len(l_t) == 9:
  17.         return True
  18.     return False
  19. def euler032():
  20.     l_result = []
  21.     for i in range(1, 10):
  22.         for j in range(1234, 9877):
  23.             if isDup(j):
  24.                 k = i * j
  25.                 if k > 9876:
  26.                     break
  27.                 if isDup(k):
  28.                     if isPanDigital(i, j, k):
  29.                         #print(i, j, k)
  30.                         l_result.append(k)
  31.     for i in range(12, 99):
  32.         for j in range(123, 988):
  33.             if isDup(j):
  34.                 k = i * j
  35.                 if k > 9876:
  36.                     break
  37.                 if isDup(k):
  38.                     if isPanDigital(i, j, k):
  39.                         #print(i, j, k)
  40.                         l_result.append(k)                    
  41.     print(sum(set(l_result)))            
  42. if __name__ == '__main__':
  43.     start = time()
  44.     # print(isDup(121))
  45.     euler032()
  46.     print('cost %.6f sec' % (time() - start))
复制代码

45228
cost 0.078008 sec
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-11 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表