CF1696C Fishingprince Plays With Array

题目描述

Fishingprince 正在玩一个数组 $[a_1,a_2,\dots,a_n]$。他还有一个魔法数字 $m$。 他可以对数组进行以下两种操作: - 选择 $1\le i\le n$,使得 $a_i$ 能被 $m$ 整除(即存在整数 $t$ 使得 $m \cdot t = a_i$)。将 $a_i$ 替换为 $m$ 个 $\frac{a_i}{m}$。其余元素的顺序不变。例如,当 $m=2$,$a=[2,3]$,$i=1$ 时,$a$ 变为 $[1,1,3]$。 - 选择 $1\le i\le n-m+1$,使得 $a_i=a_{i+1}=\dots=a_{i+m-1}$。将这 $m$ 个元素替换为一个 $m \cdot a_i$。其余元素的顺序不变。例如,当 $m=2$,$a=[3,2,2,3]$,$i=2$ 时,$a$ 变为 $[3,4,3]$。 注意,数组长度在操作过程中可能会发生变化。上述 $n$ 指的是当前数组的长度(可能与输入中的 $n$ 不同)。 Fishingprince 还有另一个数组 $[b_1,b_2,\dots,b_k]$。请你判断他是否可以通过任意次数(可以为零)上述操作,将 $a$ 变为 $b$。

输入格式

每组测试数据包含多个测试用例。第一行包含测试用例数 $t$($1 \le t \le 10^4$)。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $m$($1\le n\le 5\cdot 10^4$,$2\le m\le 10^9$)。 第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($1\le a_i\le 10^9$)。 第三行包含一个整数 $k$($1\le k\le 5\cdot 10^4$)。 第四行包含 $k$ 个整数 $b_1,b_2,\ldots,b_k$($1\le b_i\le 10^9$)。 保证所有测试用例中 $n+k$ 的总和不超过 $2\cdot 10^5$。

输出格式

对于每个测试用例,如果可以将 $a$ 变为 $b$,输出 Yes,否则输出 No。可以使用大小写任意的字母。

说明/提示

在样例的第一个测试用例中,我们可以对 $i=2$ 执行第二种操作:$[1,\color{red}{2,2},4,2]\to [1,\color{red}{4},4,2]$。 在第二个测试用例中,我们可以: - 对 $i=2$ 执行第二种操作:$[1,\color{red}{2,2},8,2,2]\to [1,\color{red}{4},8,2,2]$。 - 对 $i=4$ 执行第二种操作:$[1,4,8,\color{red}{2,2}]\to [1,4,8,\color{red}{4}]$。 - 对 $i=3$ 执行第一种操作:$[1,4,\color{red}{8},4]\to [1,4,\color{red}{4,4},4]$。 - 对 $i=2$ 执行第二种操作:$[1,\color{red}{4,4},4,4]\to [1,\color{red}{8},4,4]$。 - 对 $i=3$ 执行第二种操作:$[1,8,\color{red}{4,4}]\to [1,8,\color{red}{8}]$。 - 对 $i=2$ 执行第二种操作:$[1,\color{red}{8,8}]\to [1,\color{red}{16}]$。 由 ChatGPT 4.1 翻译