Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import json
- from operator import mul
- from functools import reduce
- # Given a target input of N.
- # find a subset-product from c.
- N = 16759893777012736
- c = 1, 2, 4, 7, 8, 14, 28, 56, 5507, 11014, 22028, 38549, 44056, 77098, 154196, 308392, 140186621, 280373242, 560746484, 981306347, 1121492968, 1962612694, 3925225388, 7850450776, 772007721847, 1544015443694, 3088030887388, 5404054052929, 6176061774776, 10808108105858, 21616216211716
- # REMOVE REPEATING INTEGERS
- c = [c[x] for x in range(len(c)) if not(c[x] in c[:x])]
- c = sorted(c)
- stop = 0
- reset = 0
- subset_prod = []
- # shuffling list functioon
- def shuff(c, n):
- for i in range(n-1,0,-1):
- j = random.randint(0,i)
- c[i],c[j] = c[j],c[i]
- c.append(c[len(c)-1])
- random.seed()
- shuff(c, len(c))
- n = len(c)
- # 10 is the constant I randomly picked.
- # you can choose whatever you want.
- b = 10
- steps = n*(2**b)*((n*(2**b))-1)*((n*(2**b))-2)//6
- while stop <= steps:
- reset = reset + 1
- stop = stop + 1
- # resets all variables
- # because of the possibility
- # of missing a needed integer
- if reset > len(c):
- covered_elements = []
- reset = 0
- shuff(c, len(c))
- # Keep c[0]
- # and append to
- # end of list
- # del c[0]
- # to push >>
- # in list.
- c.append(c[0])
- del [c[0]]
- covered_elements = []
- for l in c:
- if l not in covered_elements:
- if N % l == 0:
- if len(covered_elements) == 0:
- covered_elements.append(l)
- if len(covered_elements) > 0:
- if l not in covered_elements:
- if reduce(mul, covered_elements) < N:
- covered_elements.append(l)
- if reduce(mul,covered_elements) not in subset_prod:
- subset_prod.append(reduce(mul,covered_elements))
- if N in subset_prod:
- print('Found Subset Product',covered_elements)
- break
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement