猜年龄

题目标题: 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你推算一下,他当时到底有多年轻。

  1. def isDup(strs): # 蛮力法 时间复杂度O(N2)
  2. lens = len(strs)
  3. l = list(strs)
  4. i = 0
  5. while i < lens:
  6. j = i + 1
  7. while j < lens:
  8. if l[i] == l[j]:
  9. return False
  10. j += 1
  11. i += 1
  12. return True
  13. def isDup1(strs): # 空间换时间 时间复杂度O(N)
  14. lens, I, i, flags = len(strs),list(strs), 0, [0] * 256
  15. while i < lens:
  16. if flags[ord(I[i])] == 0:
  17. flags[ord(I[i])] += 1
  18. i += 1
  19. else:
  20. return False
  21. return True
  22. for i in range(10, 30):
  23. _i_3, i_4 = i ** 3, i ** 4
  24. if 1000 <= _i_3 <= 9999 and 100000 <= i_4 <= 999999:
  25. _get_list = str(_i_3) + str(i_4)
  26. # print(list(_get_list)) # ==》输出信息
  27. if isDup1(_get_list):
  28. print(i)