CF1977C Nikita and LCM
题目描述
Nikita 是一名热衷于数论和算法的学生。他遇到了一个与整数数组相关的有趣问题。
假设 Nikita 有一个长度为 $n$ 的整数数组 $a$。如果某个子序列 $^\dagger$ 的[最小公倍数(LCM)](https://en.wikipedia.org/wiki/Least_common_multiple)不在数组 $a$ 中,则称该子序列为特殊子序列。空子序列的 LCM 定义为 $0$。
Nikita 想知道:$a$ 的最长特殊子序列的长度是多少?请你帮他回答这个问题!
$^\dagger$ 如果一个序列 $b$ 可以通过从 $a$ 中删除若干(可以为零或全部)元素且不改变剩余元素的顺序得到,则称 $b$ 是 $a$ 的一个子序列。例如,$[5,2,3]$ 是 $[1,5,7,8,2,4,3]$ 的一个子序列。
输入格式
每个测试点包含多组测试数据。输入的第一行包含一个整数 $t$($1 \le t \le 2000$),表示测试用例的数量。接下来是每组测试用例的描述。
每组测试用例的第一行包含一个整数 $n$($1 \le n \le 2000$),表示数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$),表示数组 $a$ 的元素。
保证所有测试用例中 $n$ 的总和不超过 $2000$。
输出格式
对于每组测试用例,输出一个整数,表示 $a$ 的最长特殊子序列的长度。
说明/提示
在第一个测试用例中,任何非空子序列的 LCM 都包含在 $a$ 中,因此答案为 $0$。
在第二个测试用例中,可以选择子序列 $[3, 2, 10, 1]$,其 LCM 为 $30$,不在 $a$ 中。
在第三个测试用例中,可以选择子序列 $[2, 3, 6, 100\,003]$,其 LCM 为 $600\,018$,不在 $a$ 中。
由 ChatGPT 4.1 翻译