Câu đố

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: PUZZLE.INP Output: PUZZLE.OUT

Trong phần thi Trò chơi lớn, lớp chuyên Tin và lớp chuyên Toán cùng đạt số điểm cao nhất. Để phân định thắng thua và tìm ra nhà vô địch, BTC Hội trại đã đưa ra một thử thách cuối cùng, là một câu đố như sau:

“Cho một nền nhà hình vuông có độ dài cạnh \(n = 2^k\). Nền nhà này bị khuyết một số ô theo quy luật đặc biệt. Có hai loại nền nhà như sau:

  • Loại I: Khuyết một phần tư, ở một trong bốn góc: 1 - trái trên, 2 - phải trên, 3 - trái dưới, 4 - phải dưới
  • Loại II: Khuyết một ô duy nhất, nằm bên trong hình vuông.

Nhiệm vụ của bạn là, tìm cách dùng các viên gạch hình thước thợ (hình chữ L), được tạo bởi 3 ô vuông đơn vị để lát toàn bộ nền nhà (tức phần không bị khuyết).”

Gạch hình thước thợ Nền loại I (\(k = 3\)), khuyết phần 3 Nền loại II (\(k = 2\)), khuyết ô \((2,3)\)

Một phương án lát nền được coi là hợp lệ nếu thỏa mãn hai điều kiện sau:

  1. Mỗi một ô vuông trên nền nhà đều được lát bởi đúng một viên gạch. Đương nhiên, mỗi viên gạch phải lát đúng 3 ô vuông và không nằm đè lên phần bị khuyết.
  2. Hai viên gạch kề cạnh nhau phải khác màu nhau. Có 26 màu gạch khác nhau, được ký hiệu bởi các ký tự trong a-z (từ a tới z).

Là một thành viên của lớp chuyên Tin, bạn hãy suy nghĩ giải pháp cho vấn đề này nhé!

Input

  • Dữ liệu vào đọc từ tệp PUZZLE.INP:
    • Dòng đầu tiên chứa số nguyên dương \(k\) (\(2 \le k \le 10\)). Kích thước nền là \(n = 2^k\).
    • Dòng thứ hai chứa số \(\lambda\) (\(\lambda \in \{1, 2\}\)) cho biết nền nhà thuộc loại I nếu \(\lambda = 1\) và thuộc loại II nếu \(\lambda = 2\).
    • Dòng thứ ba chứa:
      • Số nguyên \(t\) (\(1 \le t \le 4\)) ký hiệu cho phần bị khuyết, nếu \(\lambda = 1\).
      • Hai số nguyên \(x, y\) (\(1 \le x, y \le n\)) là tọa độ ô khuyết, nếu \(\lambda = 2\).
    • Dữ liệu vào đảm bảo tồn tại cách lát nền thỏa mãn.

Output

  • Ghi ra tệp PUZZLE.OUT:
    • Gồm \(n\) dòng, mỗi dòng chứa chính xác \(n\) ký tự mô tả một phương án lát nền.
    • Sử dụng ký tự chữ cái in thường (a-z) biểu thị màu viên gạch. Sử dụng ký tự dấu cách biểu thị cho ô nền khuyết.

Example

Test 1

Input
2
1
3
Output
zzbb
zaab
  az
  zz

Scoring

  • \(20\%\) số điểm tương ứng với \(\lambda = 1\); \(k \le 3\).
  • \(20\%\) số điểm khác tương ứng với \(\lambda = 1\); \(k \le 6\).
  • \(20\%\) số điểm khác tương ứng với \(\lambda = 1\).
  • \(40\%\) số điểm còn lại tương ứng với \(\lambda = 2\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.