CF1920C Partitioning the Array
题目描述
Allen 有一个数组 $a_1, a_2, \ldots, a_n$。对于每一个 $n$ 的正整数因子 $k$,Allen 会执行以下操作:
- 他将数组划分为 $\frac{n}{k}$ 个长度为 $k$ 的不相交子数组。换句话说,他将数组划分为如下子数组:$[a_1, a_2, \ldots, a_k], [a_{k+1}, a_{k+2}, \ldots, a_{2k}], \ldots, [a_{n-k+1}, a_{n-k+2}, \ldots, a_n]$。
- 如果存在某个正整数 $m$($m \geq 2$),使得将数组中的每个元素都替换为其除以 $m$ 的余数后,所有子数组都完全相同,则 Allen 可以获得一分。
请你帮助 Allen 计算他能获得的分数。
输入格式
每个测试包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^4$)——表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$)——数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq n$)——数组 $a$ 的元素。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示 Allen 能获得的分数。
说明/提示
在第一个测试用例中,$k=2$ 可以获得一分,因为 Allen 可以选择 $m=2$,此时两个子数组都变为 $[1, 0]$。$k=4$ 也可以获得一分,因为无论 Allen 选择什么 $m$,只有一个子数组,因此所有子数组都相同。
在第二个测试用例中,Allen 可以在 $k=3$ 时获得一分,此时 $m$ 的选择无关紧要。
由 ChatGPT 4.1 翻译