Lật tiền tố nhị phân
Đề bài
Mô tả
Cho hai xâu nhị phân và cùng độ dài (chỉ gồm các kí tự và ).
Một thao tác được định nghĩa như sau: chọn một số nguyên (), sau đó với tiền tố độ dài của , ta đồng thời đảo bit từng vị trí (đổi ) và đảo ngược thứ tự các kí tự trong tiền tố đó.
Ví dụ, nếu và chọn thì trở thành . Nếu tiếp đó chọn thì trở thành .
Nhiệm vụ của bạn là biến thành bằng không quá thao tác. Có thể chứng minh điều này luôn thực hiện được.
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên () — số bộ dữ liệu.
- Với mỗi bộ:
- Dòng đầu chứa số nguyên ().
- Hai dòng kế tiếp lần lượt chứa hai xâu nhị phân và độ dài .
Tổng giá trị trên toàn bộ các bộ dữ liệu không vượt quá .
Dữ liệu ra
Với mỗi bộ, in một dòng theo định dạng:
trong đó là số thao tác đã dùng và () là độ dài tiền tố ở thao tác thứ . Nếu có nhiều phương án hợp lệ, in ra bất kì phương án nào.
Ràng buộc
- Tổng không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 2 01 10 5 01011 11100 2 01 01 10 0110011011 1000110100 1 0 1 |
3 1 2 1 3 1 5 2 0 7 1 10 8 7 1 2 1 1 1 |
Bộ 1: . Bộ 3: đã bằng nên không cần thao tác nào. Các đáp án khác cũng được chấp nhận miễn và xâu cuối cùng bằng . |
| 1 3 000 111 |
1 3 | Lật tiền tố độ dài của : đảo bit từng vị trí thành , đảo ngược thứ tự vẫn là . Vậy sau đúng thao tác. |
Bình luận