Belarusian State University
题号:NC233511
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

成为白俄罗斯国立大学 (BSU) 的学生是值得骄傲的理由。在学习算法理论课程时,您必须解决许多具有挑战性的问题,然后才能进入期末考试。这是这些问题之一。

给定一个正整数 n4n 个整数 c(i,j,k),它们可以等于 01 (, , )。

考虑介于 0 之间(包括0)的两个整数 xy。令 为它们的二进制表示 ()。定义 。显然,f(x,y) 也是 0 之间的整数。

给定两个多重集 AB,对于所有(a,b), 找到f(a,b)的值的多重集,其中

输入描述:

第一行包含一个整数 

第二行包含 n4 位二进制字符串。第 i 个字符串由 以这个特定的顺序的值组成。

接下来的两行分别描述了多重集 AB。多重集的描述由 个整数 组成,表示多重集中数字 的数量()。多重集中没有其他数字。

输出描述:

在单行中打印  个整数,即生成的多重集中数字  的数量。
示例1

输入

复制
3
0111 0110 0001
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0

输出

复制
0 0 0 0 0 0 0 1

说明

在第一个示例中,给定 56。对于 x_i, y_i \in \left\{0, 1\right\},我们有

f(x_0 + 2x_1 + 4x_2,~y_0 + 2y_1 + 4y_2) = (x_0 \text{ OR } y_0) + 2 \cdot (x_1 \text{ XOR } y_1) + 4 \cdot (x_2 \text{ AND } y_2).

因此,生成的多重集中唯一的数字是 7
示例2

输入

复制
2
1100 1101
2 0 2 1
2 0 2 1

输出

复制
2 4 3 16
示例3

输入

复制
1
0000
142857142 857142857
998244353 1755646

输出

复制
999999998000000001 0

备注:

原题链接:https://codeforces.com/gym/102956/problem/A