鱼C论坛

 找回密码
 立即注册
查看: 6377|回复: 24

题目43:找出所有具有异常子串整除性的pandigital数之和

[复制链接]
发表于 2016-10-5 22:22:38 | 显示全部楼层
迷雾少年 发表于 2016-8-30 19:04
1406357289
1430952867
1460357289

答案应该是对的,但是我换了一种算法,不要穷举所有数,不然效率太低。
我是生成pandigital,然后依次判断,27.3秒搞定。
  1. ['4130952867', '1430952867', '4160357289', '4106357289', '1460357289', '1406357289']
  2. [Finished in 27.3s]
复制代码
  1. def getPan(n):
  2.         if n == 2:
  3.                 return ['210','120','102','201','021','012']
  4.         if n>2:
  5.                 pan = getPan(n-1)
  6.                 length = len(pan[0])
  7.                 pannew = []
  8.                 for each in pan:
  9.                         pannew.append(str(n)+str(each))
  10.                         pannew.append(str(each)+str(n))
  11.                         for j in range(1,length):
  12.                                 pannew.append(str(each)[:j]+str(n)+str(each)[j:])
  13.                 return pannew

  14. def judge(plist):
  15.         prime = [2,3,5,7,11,13,17]
  16.         returnlist = []
  17.         for each in plist:
  18.                 if each[0] == '0':
  19.                         pass
  20.                 else:
  21.                         flag = 1
  22.                         for j in range(1,8):
  23.                                 if each[j] == '0':
  24.                                         if int(each[j+1:j+3]) % prime[j-1] != 0:
  25.                                                 flag = 0
  26.                                                 break
  27.                                 else:
  28.                                         if int(each[j:j+3]) % prime[j-1] != 0:
  29.                                                 flag = 0
  30.                                                 break
  31.                         if flag == 1:
  32.                                 returnlist.append(each)
  33.         return returnlist

  34. plist = getPan(9)
  35. plist = judge(plist)
  36. print (plist)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 02:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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