CF2258E DivMEX

题目描述

给定一个正整数数组 $a_1, a_2, \ldots, a_n$。 定义 $f(l, r)$,其中 $1 \leq l \leq r \leq n$,表示最小的正整数,使得该整数不能整除 $\operatorname{lcm}(a_l, a_{l+1}, \ldots, a_r)$。这里,数组一段的 $\operatorname{lcm}$ 表示这些整数的最小公倍数。 请判断存在哪些正整数 $x$,使得存在某一对整数 $(l, r)$,满足 $1 \leq l \leq r \leq n$ 且 $f(l, r) = x$。

输入格式

每个测试点包含多组测试用例。第一行包含整数 $t$($1 \le t \le 10^4$),表示测试用例的组数。 每组测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示数组的长度。 第二行包含 $n$ 个正整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le n$)。 保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出两行。 第一行输出一个整数 $k$,表示满足条件的整数 $x$ 的个数。 第二行输出 $k$ 个升序排列的整数 $x_1 < x_2 < \ldots < x_k$,表示所有满足条件的 $x$。

说明/提示

对于第一个测试用例,唯一的 $(l,r)$ 为 $(1,1)$,且 $f(1,1)=2$。 对于第二个测试用例,$(l,r)=(1,1)$ 得到的约数集合为 $\{1,2\}$,$(l,r)=(1,2)$ 得到的约数集合为 $\{ 1, 2, 3, 6\}$,$(l,r)=(2,2)$ 得到的约数集合为 $\{1, 3\}$。这意味着 $f(1,1)=3$,$f(1,2)=4$,$f(2,2)=2$。没有其他的 $(l,r)$ 会产生不同的 $f$ 值,所以答案为 $[2,3,4]$。 对于最后一个测试用例,有 $f(2,2)=2$,$f(1,1)=3$ 且 $f(1,5)=5$。可以看出没有其他可能的取值。 由 ChatGPT 5 翻译