[otomat] - Otomat

Xem dạng PDF



Điểm: 3,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: OTOMAT.INP
Output: OTOMAT.OUT

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Một otomat có 2 trạng thái 0 và 1. Trạng thái 0 khóa k nằm bên trái, trạng thái 1 khóa k nằm bên phải, nếu có bóng tác động thì sẽ chuyển từ trạng thái 0 thành 1 và ngược lại 1 thành 0. Nếu khóa k bên nào thì bóng sẽ rơi về phía bên kia.

Trong một hệ thống gồm 8 otomat (gọi là G1,G2,,G8) đang ở hai trạng thái nhị phân (0 hoặc 1). Mỗi lần thả một quả bóng vào một trong ba cửa A, B, C bóng sẽ đi theo một đường quyết định bởi trạng thái của các otomat mà nó gặp – đồng thời mỗi otomat bị bóng "tác động" sẽ đổi trạng thái (01,10) ngay khi bóng đi qua nó.

Quy tắc chuyển hướng của bóng như sau (khi bóng đến một otomat, otomat đó xem trạng thái hiện tại để quyết định nhánh, rồi bị tác động và đổi trạng thái):

  • Nếu bóng đi qua cửa A:
    1. Bóng đến G1.
    2. Nếu G1 đang là 1 thì bóng tiếp tục đến G6; nếu G1 đang là 0 thì bóng xuống G4.
    3. Nếu bóng đến G4: nếu G4 là 0 thì bóng xuống G7, ngược lại (nếu G4=1) bóng đi đến G6.
    4. Khi bóng tới G6 hoặc G7, nó tác động otomat ấy và kết thúc đường đi (không còn chuyển tiếp nữa).
  • Nếu bóng đi qua cửa B:
    1. Bóng đến G2.
    2. Nếu G2 là 1 thì bóng tiếp tục đến G4; nếu G2 là 0 thì bóng xuống G5.
    3. Nếu bóng đến G5: nếu G5 là 1 thì bóng đi đến G7, ngược lại (nếu G5=0) bóng đi đến G8.
    4. Khi bóng tới G7 hoặc G8, nó tác động otomat ấy và kết thúc đường đi.
  • Nếu bóng đi qua cửa C:
    1. Bóng đến G3.
    2. Nếu G3 là 1 thì bóng tiếp tục đến G5; nếu G3 là 0 thì bóng đi đến G8.
    3. Khi bóng tới G5 hoặc G8, tuân theo quy tắc ở trên: nếu vào G5 thì G5 quyết định tới G7 hay G8 theo trạng thái hiện tại; cuối cùng khi bóng tới G7 hoặc G8 thì kết thúc.

Lưu ý về thứ tự thao tác trên mỗi otomat khi bóng đi qua: Khi bóng đến một otomat Gi, otomat đọc trạng thái hiện tại để quyết định hướng tiếp theo, sau đó bị tác động (đổi trạng thái) rồi bóng tiếp tục chuyển theo hướng đó.

Cho trạng thái ban đầu của 8 otomat dưới dạng xâu nhị phân 8 ký tự (theo thứ tự G1G2G3G4G5G6G7G8) và trạng thái đích (một xâu 8 ký tự khác). Hỏi có tồn tại một dãy thả bóng (mỗi lần thả chọn một cửa trong {A,B,C}) sao cho sau khi thực hiện tuần tự các lần thả, hệ thống đạt đúng trạng thái đích hay không? Nếu có, hãy cho một dãy cửa thực hiện được điều đó.

Dữ liệu vào

Dữ liệu vào từ tệp OTOMAT.INP theo cấu trúc như sau:

  • Dòng 1: Một xâu nhị phân thể hiện trạng thái ban đầu của otomat (G1G8).
  • Dòng 2: Một xâu nhị phân thể hiện trạng thái đích của otomat (G1G8).

Kết quả

Ghi ra tệp OTOMAT.OUT:

  • Một xâu (không cách) các ký tự chỉ cửa thả theo thứ tự (mỗi ký tự là A, B hoặc C) miêu tả một dãy thả đạt được trạng thái đích (Độ dài xâu không quá 100). Nếu có nhiều lời giải, in một lời giải có thứ tự từ điển nhỏ hơn.
  • Nếu không thể đạt được trạng thái đích, ghi 0.

Ví dụ

Input
01100001
11011010
Output
AC

Ràng buộc

  • Độ dài xâu kết quả không quá 100.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.