Chúng tôi đã xác định một số gấp ở đây .
Nhưng bây giờ chúng ta sẽ định nghĩa một Super Folding Number. Một số Super Folding là một số mà nếu gấp đủ số lần, cuối cùng nó sẽ đạt được một ít hơn một lũy thừa hai. Phương pháp gấp hơi khác so với câu hỏi số gấp.
Thuật toán gấp như sau:
Lấy biểu diễn nhị phân
ví dụ 5882
1011011111010
Đổ nó vào ba phân vùng. Nửa đầu, nửa cuối và chữ số giữa (nếu nó có số chữ số lẻ)
101101 1 111010
Nếu chữ số giữa bằng 0, số này không thể được gấp lại
Đảo ngược nửa thứ hai và chồng lên trên nửa đầu
010111 101101
Thêm chữ số vào vị trí
111212
- Nếu có bất kỳ 2 giây nào trong kết quả thì số này không thể được gấp lại nếu không số mới là kết quả của thuật toán gấp.
Một số là một số Super Folding nếu nó có thể được gấp lại thành một chuỗi liên tục. (Tất cả các số gấp cũng là số siêu gấp)
Nhiệm vụ của bạn là viết mã nhận số và đưa ra giá trị trung thực nếu số đó là số Super Folding và giả mạo nếu không. Bạn sẽ được ghi vào kích thước của chương trình của bạn.
Ví dụ
5200
Chuyển đổi thành nhị phân:
1010001010000
Chia thành nửa:
101000 1 010000
Giữa là một vì vậy chúng tôi tiếp tục Siêu nhân một nửa:
000010
101000
Đã thêm chúng:
101010
Không có twos nên chúng tôi tiếp tục Chia làm đôi:
101 010
Gập lại:
010
101
111
Kết quả là 111
(7 số thập phân) vì vậy đây là Số siêu gấp.
Các trường hợp thử nghiệm
100 số siêu gấp đầu tiên là:
[1, 2, 3, 6, 7, 8, 10, 12, 15, 20, 22, 28, 31, 34, 38, 42, 48, 52, 56, 63, 74, 78, 90, 104, 108, 120, 127, 128, 130, 132, 142, 150, 160, 170, 178, 192, 204, 212, 232, 240, 255, 272, 274, 276, 286, 310, 336, 346, 370, 400, 412, 436, 472, 496, 511, 516, 518, 524, 542, 558, 580, 598, 614, 640, 642, 648, 666, 682, 704, 722, 738, 772, 796, 812, 852, 868, 896, 920, 936, 976, 992, 1023, 1060, 1062, 1068, 1086, 1134, 1188, 1206, 1254, 1312, 1314, 1320, 1338, 1386, 1440, 1458, 1506, 1572, 1596]
3
lẻn vào các trường hợp thử nghiệm một lần nữa? Tôi không thể thấy làm thế nào nó có thể được gấp lại, vì nó tách ra1 1
, ngay lập tức đưa ra một2
. Hay bạn đang nói rằng gấp nó 0 lần cũng được tính?