CF1648B Integral Array
题目描述
给定一个长度为 $n$ 的正整数数组 $a$,数组下标从 $1$ 到 $n$。我们称一个数组为“整性数组”,如果对于数组中的任意两个(可以相同)数 $x$ 和 $y$,且 $x \ge y$,都有 $\left\lfloor \frac{x}{y} \right\rfloor$(即 $x$ 除以 $y$ 向下取整)也在该数组中。
保证数组 $a$ 中的所有数都不超过 $c$。你的任务是判断该数组是否为整性数组。
输入格式
输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含两个整数 $n$ 和 $c$($1 \le n \le 10^6$,$1 \le c \le 10^6$),分别表示数组 $a$ 的长度和数组中元素的上限。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le c$),表示数组 $a$。
设 $N$ 为所有测试数据中 $n$ 的总和,$C$ 为所有测试数据中 $c$ 的总和。保证 $N \le 10^6$ 且 $C \le 10^6$。
输出格式
对于每组测试数据,如果数组是整性数组,输出 Yes,否则输出 No。
说明/提示
在第一个测试点中,可以很容易地看出该数组是整性数组:
- $\left\lfloor \frac{1}{1} \right\rfloor = 1$,$a_1 = 1$,该数在数组中出现
- $\left\lfloor \frac{2}{2} \right\rfloor = 1$
- $\left\lfloor \frac{5}{5} \right\rfloor = 1$
- $\left\lfloor \frac{2}{1} \right\rfloor = 2$,$a_2 = 2$,该数在数组中出现
- $\left\lfloor \frac{5}{1} \right\rfloor = 5$,$a_3 = 5$,该数在数组中出现
- $\left\lfloor \frac{5}{2} \right\rfloor = 2$,$a_2 = 2$,该数在数组中出现
因此,条件满足,数组是整性数组。
在第二个测试点中,只需注意到
$\left\lfloor \frac{7}{3} \right\rfloor = \left\lfloor 2\frac{1}{3} \right\rfloor = 2$,但 $2$ 不在 $a$ 中,因此不是整性数组。
在第三个测试点中,$\left\lfloor \frac{2}{2} \right\rfloor = 1$,但数组中只有 $2$,因此不是整性数组。
由 ChatGPT 4.1 翻译