Biểu thức logic

Xem dạng PDF

Gửi bài giải

Điểm: 1,54 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
HSG Duyên hải và Ðồng bằng Bắc Bộ 2014
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Một biểu thức logic là biểu thức gồm các biến (được kí hiệu bằng các chữ cái in thường nhận giá trị là số nguyên ~32~ bit không dấu) với các toán tử logic AND, OR, XOR và các dấu ngoặc. Một biểu thức hợp lệ được định nghĩa như sau:

  • Nếu ~x~, ~y~ là biến thì: ~x~ là biểu thức hợp lệ; ~y~ là biểu thức hợp lệ; ~(x~ AND ~y)~, ~(x~ OR ~y)~, ~(x~ XOR ~y)~ là các biểu thức hợp lệ.
  • Nếu ~A~, ~B~ là biểu thức hợp lệ thì: ~(A~ AND ~B)~, ~(A~ OR ~B)~, ~(A~ XOR ~B)~ là các biểu thức hợp lệ.

Ví dụ:

  • ~x~ là biểu thức hợp lệ;
  • ~((x~ AND ~y)~ OR ~z)~ là biểu thức hợp lệ;
  • ~(x~ AND ~y~ là biểu thức không hợp lệ vì thiếu dấu ngoặc đóng;
  • ~(x~ AND ~y)~ OR ~z~ là biểu thức không hợp lệ vì thiếu cặp dấu ngoặc bao ở ngoài cùng.

Trong bài toán này chỉ xét biểu thức hợp lệ mà mỗi biến chỉ xuất hiện một lần.

Yêu cầu:

Cho một phương trình có dạng "biểuthứcF ~= P_0~" trong đó ~P_0~ là một số nguyên 32 bit không dấu. Hãy đếm số các bộ giá trị của các biến để khi thay vào biểuthứcF, ta thu được một đẳng thức đúng.

Input

  • Dòng đầu tiên ghi số nguyên dương ~K~ là số lượng bộ dữ liệu.
  • Tiếp đến là ~K~ dòng, mỗi dòng (tương ứng với một bộ dữ liệu) chứa một xâu có dạng "biểuthứcF ~=~ P0" trong đó biểuthứcF là một biểu thức hợp lệ.

Output

Ghi ra thiết bị ra chuẩn gồm ~K~ dòng, mỗi dòng ghi một số nguyên là phần dư của phép chia số lượng các bộ giá trị để phương trình đúng cho ~1000000009~ ~(10^{9} + 9)~ tương ứng với bộ dữ liệu trong file dữ liệu vào.

Giới hạn

  • Subtask ~1~ (15/70 điểm): Giả thiết là biểu thức chỉ chứa phép OR, số lượng biến không vượt quá ~8~ và ~0 \leq P_0 < 8~
  • Subtask ~2~ (20/70 điểm): Giả thiết là biểu thức chỉ chứa phép OR, số lượng biến không vượt quá ~26~ và ~0 \leq P_0 < 8~.
  • Subtask ~3~ (15/70 điểm): Giả thiết là số lượng biến không vượt quá ~26~ và biểu thức chỉ chứa toàn phép AND hoặc biểu thức chỉ chứa toàn phép XOR.
  • Subtask ~4~ (20/70 điểm): Giả thiết là số lượng biến không vượt quá ~26~ và ~0 \leq P_0 < 2^{32}~.

Sample Input

3
(a OR b) = 2
(a OR (b OR c)) = 3
(x XOR y) = 2

Sample Output

3
49
294967260

Bình luận

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



  • 0
    gv_THCSgiaphu_Vuhuuphong  đã bình luận lúc 23, Tháng 3, 2024, 7:17

    Tham khảo code tại đây: https://vnspoj.github.io/problems/DHLEXP.html