Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = int(input())
- s = input()
- x = int(s, 2)
- g = 0
- for i in s:
- if i == '1':
- g += 1
- if g == 1:
- for i in s:
- if i == '1':
- print(0)
- else:
- print(1)
- exit(0)
- if g == 0:
- print("1\n" * n)
- exit(0)
- a = x % (g - 1)
- ap = 1
- c = x % (g + 1)
- cp = 1
- ans = []
- shit = [0]
- for i in range(1, 200100):
- shit.append(0)
- k = 1
- while k <= i:
- if i & k:
- shit[i] += 1
- k *= 2
- for i in range(n - 1, -1, -1):
- if s[i] == '0':
- b = (c + cp) % (g + 1)
- else:
- b = (a - ap) % (g - 1)
- cnt = 1
- while True:
- h = shit[b]
- if h == 0:
- ans.append(cnt)
- break
- cnt += 1
- b %= h
- ap = 2 * ap % (g - 1)
- cp = 2 * cp % (g + 1)
- for i in range(len(ans) - 1, -1, -1):
- print(ans[i])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement