Cho hai số x, y. Kiểm tra xem chúng khác nhau ở đúng một vị trí bit (Hamming distance = 1).
Ví dụ: x=25 (11001), y=17 (10001) → True (chỉ bit thứ 3 khác).
Thuật toán
- z = x XOR y (các bit khác nhau sẽ thành 1).
- Đếm số bit 1 trong z (popcount).
- Nếu bằng 1 → True, else False.
Ví dụ code
def bit_count(n):
count = 0
while n:
count += n & 1
n >>= 1
return count
def solve(x, y):
return bit_count(x ^ y) == 1
x = 25
y = 17
print(solve(x, y))
Đầu vào
25, 17
Đầu ra
True