|
发表于 2017-2-28 03:35:17
|
显示全部楼层
本帖最后由 wangzhenas 于 2017-3-5 20:10 编辑
答案:127035954683
耗时: 0.04s
i5-3210M
思路就是把立方数转化为整理过的元组,元祖可作为字典的key,然后对对应的value(list)做append操作根据,value的长度来判断是否满足条件
循环条件是立方数的位数是否有变化,如果变大了,那么就重置字典
比如2的3次是8,3的3次是27那么就做一次判断是否有满足条件的值,如果没有的话就重置字典
- import time
- t = time.time()
- num, current_len, d = 0, 0, {}
- while 1:
- cubic_num_s = tuple(sorted(str(num**3)))
- if len(cubic_num_s) > current_len:
- check_list = [min(value) for value in d.values() if len(value) == 5]
- if check_list:
- print(check_list,min(check_list)**3,time.time()-t)
- break
- d, current_len = {cubic_num_s:[num]}, len(cubic_num_s)
- elif cubic_num_s in d:
- d[cubic_num_s].append(num)
- else:
- d.update({cubic_num_s:[num]})
- last_num_s, num = cubic_num_s, num+1
复制代码 |
评分
-
查看全部评分
|