1680. Concatenation of Consecutive Binary Numbers - cocoder39/coco39_LC GitHub Wiki
1680. Concatenation of Consecutive Binary Numbers
get the low bit x & (-x) (eg, 0b100100 -> 0b100, 0b101 -> 0b1)
- x = 0b1, x & (-x) = 0b1
- x = 0b10, x & (-x) = 0b10
- x = 0b11, x & (-x) = 0b1
class Solution:
def concatenatedBinary(self, n: int) -> int:
MOD = 10**9 + 7
sum = 0
shift = 0
for i in range(1, n + 1):
if i & (-i) == i:
shift += 1
sum = ((sum << shift) + i) % MOD
return sum