Bảng nhị phân về 0
Nộp bài giải
Điểm:
4,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 bảng nhị phân kích thước gồm các kí tự 0 và 1.
Trong một thao tác, bạn chọn ba ô khác nhau cùng nằm trong một hình vuông nào đó của bảng, rồi đảo giá trị (0 thành 1, 1 thành 0) trên cả ba ô đó.
Hãy đưa toàn bộ bảng về 0. Bạn được phép thực hiện không quá thao tác và không cần tối thiểu hoá số thao tác. Có thể chứng minh rằng luôn tồn tại đáp án.
Dữ liệu vào
Dòng đầu chứa số nguyên — số bộ test.
Với mỗi bộ test:
- Dòng đầu chứa hai số nguyên .
- dòng tiếp theo, mỗi dòng là một xâu nhị phân độ dài mô tả các hàng của bảng.
Dữ liệu ra
Với mỗi bộ test:
- Dòng đầu in số nguyên () — số thao tác.
- dòng tiếp theo, mỗi dòng in 6 số nguyên (, ) mô tả thao tác trên ba ô . Ba ô phải khác nhau và cùng thuộc một hình vuông .
Có nhiều đáp án hợp lệ; bất kỳ đáp án nào thoả mãn ràng buộc và đưa được bảng về toàn 0 đều được chấp nhận.
Ràng buộc
- Tổng trên tất cả bộ test không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 2 2 00 00 |
0 | Bảng đã toàn 0, không cần thao tác. |
| 1 2 2 10 00 |
3 1 1 2 1 2 2 1 1 1 2 2 2 1 1 2 1 1 2 |
Một dãy 3 thao tác đưa ô về 0 trong khi các ô khác giữ nguyên. Đáp án không duy nhất. |
Bình luận