Nội dung Bài tập
- Mã:
- CLB_CAST_5
- Tên:
- CLB_CAST_5
- Dạng thi:
- oi
- Thang điểm:
- 2 điểm
- Giới hạn thời gian:
- 1 giây
- Giới hạn bộ nhớ:
- 256 MB
- Được tạo bởi:
- namnp
Giả sử bạn có một chuỗi nhị phân như sau: “011100011”
Một cách để mã hóa chuỗi này là cộng cho mỗi chữ số tổng của các chữ số liền kề. Ví dụ, chuỗi trên sẽ trở thành: “123210122”
Cụ thể, nếu P là chuỗi ban đầu, và Q là chuỗi đã mã hóa, thì Q[i] = P[i-1] + P[i] + P[i+1] cho tất cả các vị trí chữ số i. Các ký tự ngoài cạnh trái và phải của chuỗi được coi là không.
Cách giải mã: (lấy chuỗi “123210122” làm ví dụ).
Trường hợp 1:
Giả sử P[0] = 0.
Vì Q[0] = P[0] + P[1] = 0 + P[1] = 1, chúng ta biết rằng P[1] = 1.
Vì Q[1] = P[0] + P[1] + P[2] = 0 + 1 + P[2] = 2, chúng ta biết rằng P[2] = 1.
Lặp lại các bước này cho ta được P[3] = 1, P[4] = 0, P[5] = 0, P[6] = 0, P[7] = 1, và P[8] = 1 và lưu ý phương trình này Q[8] = P[7] + P[8] = 1 + 1 = 2. Vì phương trình này đúng, ta đã khôi phục được một chuỗi ban đầu là “011100011”.
Trường hợp 2:
Giả sử P[0] = 1.
Vì Q[0] = P[0] + P[1] = 1 + P[1] = 1, chúng ta biết rằng P[1] = 0.
Vì Q[1] = P[0] + P[1] + P[2] = 1 + 0 + P[2] = 2, chúng ta biết rằng P[2] = 1.
Bây giờ lưu ý rằng Q[2] = P[1] + P[2] + P[3] = 0 + 1 + P[3] = 3, điều này dẫn đến kết luận rằng P[3] = 2. Tuy nhiên, điều này vi phạm thực tế là mỗi ký tự trong chuỗi ban đầu phải là ‘0’ hoặc ‘1’. Do đó, không tồn tại chuỗi ban đầu nào như vậy mà chữ số đầu tiên là ‘1’. Như vậy trả về kết quả là “NONE”.
Cho một chuỗi Q, chứa chuỗi đã mã hóa, trả về 2 dòng. Dòng đầu tiên chứa chuỗi được giải mã với giả định ký tự đầu tiên là ‘0’, Dòng thứ hai giả định ký tự đầu tiên là ‘1’.
Ví dụ:
Input
Output
123210122 011100011
NONE
Theme :
Mời bạn soạn code
Ai có thể xem bài này :