Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def plusone(x):
- ptm = []
- mtp = []
- if x[-1] == 0:
- x[-1] = 1
- ptm.append(-1)
- return x, ptm, mtp
- i = -1
- while x[i-1] == 1:
- x[i] = 0
- mtp.append(i)
- i -= 1
- x[i-1] = 1
- ptm.append(i-1)
- return x, ptm, mtp
- def sum(ar):
- s = 0
- for i in ar:
- s += i
- return s
- def workf(x, n, ar1):
- ar = ar1
- f = [0 for a in range(n+1)]
- cursum = sum(ar1)
- double = [x*2 for x in ar1]
- if cursum == x:
- return ar1
- for j in range(2**(n-1)):
- f, ptm, mtp = plusone(f)
- if f[0] == 1:
- return 'No sulution!'
- if bool(ptm):
- for i in ptm:
- cursum -= double[i]
- ar[i] = -ar[i]
- ptm.clear()
- if bool(mtp):
- for i in mtp:
- cursum += double[i]
- ar[i] = -ar[i]
- mtp.clear()
- if cursum == x:
- return ar
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement