Lật tiền tố nhị phân
Nộp bài giải
Điểm:
6,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
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