Điều này được lấy cảm hứng từ Vấn đề 13 - Không lặp lại Nhị phân của cuộc thi gần đây của HP CodeWars.
Hãy lấy một số thập phân ngẫu nhiên, nói
727429805944311
và nhìn vào biểu diễn nhị phân của nó:
10100101011001011111110011001011101010110111110111
Bây giờ chia biểu diễn nhị phân đó thành các phần sau trong đó các chữ số 0
và 1
xen kẽ.
1010 010101 10 0101 1 1 1 1 1 10 01 10 0101 1 1010101 101 1 1 1 101 1 1
Và chuyển đổi từng phần sau trở lại thành số thập phân.
10 21 2 5 1 1 1 1 1 2 1 2 5 1 85 5 1 1 1 5 1 1
Nhiệm vụ
Lấy một số nguyên duy nhất, dương làm đầu vào và đầu ra chuỗi các số nguyên dương thu được theo quy trình trên.
Chi tiết
- Đầu vào và đầu ra phải ở dạng thập phân hoặc đơn nguyên.
- Các số trong đầu ra phải được phân tách theo kiểu hợp lý, dễ đọc với con người và chúng phải ở dạng thập phân hoặc đơn nguyên. Không hạn chế về khoảng trắng. Áp dụng phong cách đầu ra:
[1,2,3]
,1 2 3
,1\n2\n3
nơi\n
là dòng mới đen vv
Các trường hợp thử nghiệm
Input | Output
0 | 0
1 | 1
2 | 2
3 | 1 1
4 | 2 0
5 | 5
6 | 1 2
7 | 1 1 1
8 | 2 0 0
9 | 2 1
10 | 10
50 | 1 2 2
100 | 1 2 2 0
1000 | 1 1 1 1 10 0 0
10000 | 2 1 1 2 0 2 0 0 0
12914 | 1 2 2 1 1 2 2
371017 | 5 42 10 2 1
Lưu ý thêm: tất cả các số trong đầu ra phải có dạng (2^k-1)/3
hoặc 2*(2^k-1)/3
. Đó là, 0 1 2 5 10 21, 42, 85, 170, ...
mà là A000975 trong OEIS.
|tac
sẽ vẫn còn trong câu trả lời của tôi sau đó :)