class Solution:
def kthGrammar(self, n: int, k: int) -> int:
prev = ['0']
for i in range(2, n + 1):
cur = []
for c in prev:
if c == '0':
cur.append('0')
cur.append('1')
else:
cur.append('1')
cur.append('0')
prev = cur
return int(prev[k - 1])class Solution:
def kthGrammar(self, n: int, k: int) -> int:
def dfs(n, k, root):
if n == 1:
return root
total = 1 << (n - 1)
if k > (total // 2):
return dfs(n - 1, k - (total // 2), root ^ 1)
else:
return dfs(n - 1, k, root)
return dfs(n, k, 0)class Solution:
def kthGrammar(self, n: int, k: int) -> int:
cur = 0
left, right = 1, 2 ** (n - 1)
for _ in range(n - 1):
mid = (left + right) // 2
if k <= mid:
right = mid
else:
left = mid + 1
cur = 0 if cur else 1
return curclass Solution:
def kthGrammar(self, n: int, k: int) -> int:
if n == 1:
return 0
if k & 1:
return self.kthGrammar(n - 1, (k + 1) // 2)
return self.kthGrammar(n - 1, k // 2) ^ 1class Solution:
def kthGrammar(self, n: int, k: int) -> int:
return bin(k - 1).count('1') & 1