CF1033F.Boolean Computer
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Alice has a computer that operates on w -bit integers. The computer has n registers for values. The current content of the registers is given as an array a1,a2,…,an .
The computer uses so-called "number gates" to manipulate this data. Each "number gate" takes two registers as inputs and calculates a function of the two values stored in those registers. Note that you can use the same register as both inputs.
Each "number gate" is assembled from bit gates. There are six types of bit gates: AND, OR, XOR, NOT AND, NOT OR, and NOT XOR, denoted "A", "O", "X", "a", "o", "x", respectively. Each bit gate takes two bits as input. Its output given the input bits b1 , b2 is given below:
b10011b20101A0001O0111X0110a1110o1000x1001 To build a "number gate", one takes w bit gates and assembles them into an array. A "number gate" takes two w -bit integers x1 and x2 as input. The "number gate" splits the integers into w bits and feeds the i -th bit of each input to the i -th bit gate. After that, it assembles the resulting bits again to form an output word.
For instance, for 4 -bit computer we might have a "number gate" "AXoA" (AND, XOR, NOT OR, AND). For two inputs, 13=11012 and 10=10102 , this returns 12=11002 , as 1 and 1 is 1 , 1 xor 0 is 1 , not ( 0 or 1 ) is 0 , and finally 1 and 0 is 0 .
You are given a description of m "number gates". For each gate, your goal is to report the number of register pairs for which the "number gate" outputs the number 0 . In other words, find the number of ordered pairs (i,j) where 1≤i,j≤n , such that wk(ai,aj)=0 , where wk is the function computed by the k -th "number gate".
输入格式
The first line contains three integers: w , n , and m (1≤w≤12,1≤n≤3⋅104,1≤m≤5⋅104) — the word size, the number of variables, and the number of gates.
The second line contains n integers a1,a2,…,an (0≤ai<2w) — the value of variables stored in the registers.
Each of the next m lines contains a string gj (∣gj∣=w) with a description of a single gate. Each character of gj is one of "A", "O", "X", "a", "o", "x".
输出格式
Print m lines. The i -th line should contain the number of ordered pairs of variables for which the i -th gate returns zero.
输入输出样例
输入#1
4 3 1 13 10 6 AXoA
输出#1
3
输入#2
1 7 6 0 1 1 0 1 0 0 A O X a o x
输出#2
40 16 25 9 33 24
输入#3
6 2 4 47 12 AOXaox AAaaAA xxxxxx XXXXXX
输出#3
2 3 0 2
输入#4
2 2 2 2 0 xO Ox
输出#4
2 0
说明/提示
In the first test case, the inputs in binary are 1101 , 1010 , 0110 . The pairs that return 0 are (13,6) , (6,13) , and (6,6) . As it was already mentioned in the problem statement, 13⊕10=10⊕13=12 . The other pairs are 13⊕13=11 , 10⊕10=8 and 10⊕6=6⊕10=4 .