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 翻译