Description
给定一个长度为 n 的正整数数组 a,编号从 1 到 n。我们称一个数组为整性数组,如果对于数组中任意两个(可以相同)数 x 和 y,且 x≥y,都有 ⌊yx⌋(即 x 整除 y 的向下取整)也在数组中。
保证所有 a 中的数都不超过 c。你的任务是判断给定的数组是否为整性数组。
输入包含多组测试数据。第一行包含一个整数 t(1≤t≤104),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含两个整数 n 和 c(1≤n≤106,1≤c≤107),分别表示数组大小和数组元素的最大值。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤c),表示数组 a。
记 N 为所有测试数据中 n 的总和,C 为所有测试数据中 c 的总和。保证 N≤106 且 C≤107。
对于每组测试数据,若数组是整性数组,输出 Yes,否则输出 No。
3
3 5
1 2 5
4 10
1 3 3 7
1 2
2
Yes
No
No
Hint
说明
在第一个测试样例中,可以验证数组是整性的:
- ⌊11⌋=1,a1=1,该数在数组中
- ⌊22⌋=1
- ⌊55⌋=1
- ⌊12⌋=2,a2=2,该数在数组中
- ⌊15⌋=5,a3=5,该数在数组中
- ⌊25⌋=2,a2=2,该数在数组中
因此该数组满足条件,是整性数组。
在第二个测试样例中,⌊37⌋=2,但 2 不在 a 中,因此不是整性数组。
在第三个测试样例中,⌊22⌋=1,但数组中只有 2,没有 1,因此不是整性数组。
评分说明
本题测试数据分为 7 组。只有通过某组全部测试点,且通过所有必需的前置组,才能获得该组分数。
| 组别 |
分值 |
N |
C |
必须通过的组 |
备注 |
| 0 |
-- |
-- |
-- |
| 1 |
13 |
N≤100 |
0 |
|
| 2 |
17 |
N≤100000 |
C≤10000 |
| 3 |
15 |
N≤1000 |
-- |
0, 1 |
| 4 |
27 |
N≤100000 |
0--3 |
| 5 |
28 |
-- |
0--4 |