Giới thiệu (có thể bỏ qua)
Đặt tất cả các số dương theo thứ tự thông thường của nó (1, 2, 3, ...) là một chút nhàm chán, phải không? Vì vậy, đây là một loạt các thách thức xung quanh hoán vị (chia sẻ lại) của tất cả các số dương. Đây là thử thách thứ hai trong loạt bài này. Thử thách đầu tiên có thể được tìm thấy ở đây .
Trong thử thách này, chúng tôi sử dụng mã Gray để sắp xếp lại các số tự nhiên. Mã màu xám, hoặc "mã nhị phân được phản ánh" là mã hóa nhị phân theo cách hai giá trị liên tiếp chỉ khác nhau trong một bit. Một ứng dụng thực tế của mã hóa này là sử dụng nó trong các bộ mã hóa quay , do đó tôi tham khảo "Turn My Way" .
Lưu ý rằng mã hóa này để lại một số mức độ tự do. Ví dụ: theo sau nhị phân 1100, có bốn mã sau có thể có: 1101, 1110, 1000 và 0100. Đây là lý do tại sao tôi sẽ định nghĩa là giá trị nhỏ nhất, không được sử dụng trước đây chỉ khác nhau một ký tự trong mã hóa nhị phân. Trình tự này tương ứng với A163252 .
Vì đây là một thách thức "chuỗi thuần", nên nhiệm vụ là xuất ra cho cho trước làm đầu vào, trong đó là A163252 .
Bài tập
Cho một đầu vào số nguyên , đầu ra ở định dạng số nguyên ( không phải ở định dạng nhị phân).
được định nghĩa là số nguyên dương nhỏ nhất không xảy ra trước đó trong chuỗi sao cho và khác nhau một bit khi được viết ở dạng nhị phân.
Lưu ý: lập chỉ mục dựa trên 1 được giả định ở đây; bạn có thể sử dụng lập chỉ mục dựa trên 0, vì vậy , v.v. Hãy đề cập đến điều này trong câu trả lời của bạn nếu bạn chọn sử dụng nó.
Các trường hợp thử nghiệm
Input | Output
--------------
1 | 1
5 | 4
20 | 18
50 | 48
123 | 121
1234 | 1333
3000 | 3030
9999 | 9997
Quy tắc
- Đầu vào và đầu ra là các số nguyên (chương trình của bạn ít nhất phải hỗ trợ đầu vào và đầu ra trong phạm vi từ 1 đến 32767)
- Đầu vào không hợp lệ (0, số float, chuỗi, giá trị âm, v.v.) có thể dẫn đến đầu ra không dự đoán được, lỗi hoặc (không) hành vi được xác định. Trong A163252 , được định nghĩa là 0. Đối với thử thách này, chúng tôi sẽ bỏ qua điều này.
- Mặc định I / O quy tắc áp dụng.
- Lỗ hổng mặc định bị cấm.
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất tính bằng byte sẽ thắng
Lưu ý cuối cùng
Xem các câu hỏi PP & CG liên quan (nhưng không bằng nhau) sau đây:
