CF1891B Deja Vu

题目描述

给定一个长度为 $n$ 的正整数数组 $a$,以及一个长度为 $q$ 的正整数数组 $x$。 共有 $q$ 次修改操作。在第 $i$ 次修改($1 \leq i \leq q$)中,对于每个 $j$($1 \leq j \leq n$),如果 $a_j$ 能被 $2^{x_i}$ 整除,则将 $2^{x_i-1}$ 加到 $a_j$ 上。注意 $x_i$($1 \leq x_i \leq 30$)是一个不超过 30 的正整数。 在所有修改操作完成后,输出最终的数组。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $q$($1 \leq n, q \leq 10^5$),分别表示数组 $a$ 的长度和操作次数。 第二行包含 $n$ 个整数 $a_1, a_2, a_3, \ldots, a_n$,表示数组 $a$ 的元素($1 \leq a_i \leq 10^9$)。 第三行包含 $q$ 个整数 $x_1, x_2, x_3, \ldots, x_q$,表示每次操作的参数($1 \leq x_i \leq 30$)。 保证所有测试用例中 $n$ 的总和与 $q$ 的总和均不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出经过所有修改操作后的数组。

说明/提示

在第一个测试用例中,第一次操作会将第 4 和第 5 个整数加上 $2$,此时数组变为 $[1, 2, 3, 6, 6]$。后续操作不会再修改数组。 在第二个测试用例中,第一次操作不会改变数组。第二次操作会将第 5 个整数加上 $8$,数组变为 $[7, 8, 12, 36, 56, 6, 3]$。第三次操作会将第 2、3、4、5 个整数各加上 $2$,数组变为 $[7, 10, 14, 38, 58, 6, 3]$。 由 ChatGPT 4.1 翻译