Chương trình rút gọn
Đề bài
Mô tả
Cho một chương trình gồm dòng thao tác trên một số nguyên không âm trong khoảng . Mỗi dòng là một trong ba phép toán bit, ký hiệu bởi một ký tự rồi đến một hằng số ():
& y— gán| y— gán^ y— gán
Các thao tác được áp dụng tuần tự theo thứ tự đã cho.
Hãy viết một chương trình mới có không quá dòng (cùng định dạng) sao cho với mọi , kết quả cuối cùng trùng với chương trình ban đầu.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số dòng của chương trình gốc.
- dòng tiếp theo, mỗi dòng có dạng
op yvớioplà một trong các ký tự&,|,^và .
Dữ liệu ra
- Dòng đầu in số nguyên () — số dòng của chương trình tương đương.
- dòng tiếp theo, mỗi dòng là một thao tác cùng định dạng.
Mọi chương trình hợp lệ tương đương với chương trình gốc đều được chấp nhận.
Ràng buộc
- với mỗi hằng số trong chương trình gốc.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 & 1 & 3 & 5 |
1 & 1 |
, nên một dòng duy nhất là đủ. |
| 3 ^ 1 ^ 2 ^ 3 |
0 | , chương trình gốc không làm thay đổi , nên chương trình rỗng tương đương. |
| 1 ^ 1023 |
1 ^ 1023 |
Một phép XOR đơn lẻ đã ngắn, không thể rút gọn hơn. |
Bình luận