题号:NC229589
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给定一个有

个元素的多重集

,有

个询问,对于每个询问,给出一个整数

,问是否能选择

的一个非空子集,满足这个子集的

等于

,当集合只有一个数时,设这个集合的

就等于这个数,
)
的值为

的最大公约数
输入描述:
多组数据,先读入一个 T 代表组数
对于每组数据 :
第一行两个正整数 n , m 分别代表集合包含的元素个数和询问个数
第二行 n 个正整数 ai ,代表集合内的具体元素 ( 1 ≤ ai ≤ n )
接下来 m 行每行一个正整数 x 代表当前询问的数 ( 1 ≤ x ≤ n )
保证 T 组数据中 n,m 的总和不超过 1e6
输出描述:
输出 m 行,每行输出 “YES” 或者 “NO” ( 不包含引号 )
示例1
输入
复制
2
7 3
2 2 6 6 2 1 5
3
2
6
7 3
6 3 1 4 6 4 3
7
5
2
说明
第一组样例
第一个询问 找不到这样的子集
第二个询问 取子集 { 2 }
第三个询问 取子集 { 6 }
第二组样例
第一个询问 找不到这样的子集
第二个询问 找不到这样的子集
第三个询问 取子集 { 4,6 }