fork download
  1. from itertools import chain, combinations
  2.  
  3. MAX_COMBO = 7
  4.  
  5.  
  6. def powerset(iterable):
  7. s = list(iterable)
  8. return chain.from_iterable(combinations(s, r) for r in range(MAX_COMBO+1))
  9.  
  10.  
  11. nums = [409,
  12. 411,
  13. 464,
  14. 475,
  15. 512,
  16. 522,
  17. 558,
  18. 580,
  19. 674,
  20. 693,
  21. 725,
  22. 728,
  23. 740,
  24. 749,
  25. 761,
  26. 773,
  27. 787,
  28. 798,
  29. 894,
  30. 929,
  31. 973,
  32. 992,
  33. 1146,
  34. 1171,
  35. 1264,
  36. 1292,
  37. 1307,
  38. 1539,
  39. ]
  40.  
  41. inputSum = 2000
  42.  
  43. nums_filter = set([n for n in nums if n <= inputSum])
  44. print("nums : {}, filtered : {}".format(len(nums), len(nums_filter)))
  45. for i, combo in enumerate(powerset(nums_filter), 1):
  46. sum = 0
  47. for num in combo:
  48. sum += int(num)
  49. if sum == inputSum:
  50. print(combo)
Success #stdin #stdout 3.67s 9044KB
stdin
Standard input is empty
stdout
nums : 28, filtered : 28
(1307, 693)
(787, 464, 749)
(558, 693, 749)