Giới thiệu
Thử thách này yêu cầu bạn đặt các số 0 ở cuối của biểu diễn nhị phân số nguyên 010101…
, điều này được giải thích tốt nhất với một ví dụ:
Cho số nguyên 400
, bước đầu tiên là chuyển đổi nó thành nhị phân:
110010000
Như chúng ta có thể thấy bit thứ năm là bit có trọng số thấp nhất 1
, vì vậy bắt đầu từ đó chúng ta thay thế các số 0 thấp hơn bằng cách 0101
:
110010101
Cuối cùng, chúng tôi chuyển đổi trở lại thành thập phân: 405
Thử thách
Cho một số nguyên dương trả về / đầu ra giá trị kết quả tương ứng của quá trình được xác định ở trên.
Quy tắc
- Chuỗi này chỉ được xác định cho các số nguyên có ít nhất một
1
bit, vì vậy đầu vào sẽ luôn là ≥ 1 - Thay vào đó, bạn có thể lấy đầu vào dưới dạng chuỗi, danh sách các chữ số (thập phân)
- Bạn không phải xử lý đầu vào không hợp lệ
Tủ thử
Dưới đây là một số mẫu thử nghiệm khác với các bước trung gian (bạn không phải in / trả lại những mẫu này):
In -> … -> … -> Out
1 -> 1 -> 1 -> 1
2 -> 10 -> 10 -> 2
3 -> 11 -> 11 -> 3
4 -> 100 -> 101 -> 5
24 -> 11000 -> 11010 -> 26
29 -> 11101 -> 11101 -> 29
32 -> 100000 -> 101010 -> 42
192 -> 11000000 -> 11010101 -> 213
400 -> 110010000 -> 110010101 -> 405
298 -> 100101010 -> 100101010 -> 298
n
là sức mạnh tối đa của 2 phân chia đầu vào, thì câu trả lời chỉ đơn giản là(input) + ceil((2^n - 2)/3)