Hệ thống mã hoá

View as PDF

Submit solution

Points: 100.00 (partial)
Time limit: 30.0s
Memory limit: 512M
Input: stdin
Output: stdout

Author:
Problem type
Allowed languages
C, C++, GAS64, Pascal, Perl, PHP, Python, Sed, TCL, Text

Xét lưới ô vuông kích thước 5x5, mỗi ô chứa một chữ cái khác nhau trong phạm vi từ A đến Y. Các dòng của lưới được đánh số từ 1 đến 5 từ trên xuống dưới, các cột đánh số từ trái sang phải từ 1 trở đi.

33

Văn bản chỉ chứa các chữ cái và dấu cách. Việc mã hoá được tiến hành như sau: Các ký tự của văn bản được nhóm thành từng cặp, các ký tự trong cặp thay đổi theo qui tắc:

  • Nếu cặp ký tự nằm ở các đỉnh đối của một hình chữ nhật thì các ký tự trong cặp được thay bằng các ký tự ở cặp đỉnh đối kia, các ký tự cùng hàng sẽ thay thế cho nhau, ví dụ đối với lưới như hình vẽ, AN sẽ được thay thế thành DK
  • Nếu các ký tự thuộc cặp thuộc cùng hàng hoặc cùng cột thì hai ký tự trong cặp đổi chỗ, ví dụ, với lưới như hình vẽ, CR thành RC
  • Nếu cặp ký tự là giống nhau hoặc chứa ký tự Z thì chúng không thay đổi.
  • Nếu cặp ký tự có một dấu cách ở cuối, thì ký tự thứ nhất không thay đổi, nếu dấu cách ở vị trí thứ nhất, thì một dấu cách sẽ bổ sung đẩy ký tự chữ xuống cặp sau, cặp 2 ký tự dấu cách không thay đổi.
  • Nếu cuối dòng lẻ một ký tự thì ký tự Z sẽ được bổ sung để đủ cặp

Yêu cầu: Từ bảng mã hoá cho trước, Hãy mã hoá văn bản, gồm nhiều dòng, mỗi dòng không quá 250 ký tự, mỗi dòng được mã hoá như một văn bản độc lập.

Dữ liệu vào

  • Dòng đầu tiên là xâu 25 ký tự, xác định lưới ô vuông mã hoá, ghi theo dòng lần lượt từ trên xuống và từ trái sang phải.
  • Các dòng sau, mỗi dòng gồm 1 xâu ký tự cần mã hoá
  • Kết thúc là một dòng chứa một ký tự #

Kết quả:

Đưa ra các dòng, mỗi dòng chứa một dòng văn bản đã mã hoá.

Ví dụ:

INP

ABCDEFGHIJKLMNOPQRSTUVWXY
FCPPY DGTRICEU
Abcrkbxt Acsfpel
#

OUT

HAPPY BIRTHDAY
Barclays Capitalz

Comments

Please read the guidelines before commenting.


There are no comments at the moment.