CF1535B.Array Reodering

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Array Reodering

题目描述

给定一个包含 nn 个整数的数组 aa

我们称一对下标 iijj 是“好”的,如果 1i<jn1 \le i < j \le ngcd(ai,2aj)>1\gcd(a_i, 2a_j) > 1(其中 gcd(x,y)\gcd(x, y) 表示 xxyy 的最大公约数)。

如果你可以任意重排数组 aa,请你求出最多有多少对“好”的下标对。

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn2n20002 \le n \le 2000),表示数组的元素个数。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1051 \le a_i \le 10^5)。

保证所有测试用例中 nn 的总和不超过 20002000

输出格式

对于每个测试用例,输出一个整数,表示在可以任意重排数组 aa 的情况下,最多有多少对“好”的下标对。

说明/提示

在第一个样例中,数组元素可以重排为 [6,3,5,3][6, 3, 5, 3]

在第三个样例中,数组元素可以重排为 [4,4,2,1,1][4, 4, 2, 1, 1]

由 ChatGPT 4.1 翻译

样例

3
4
3 6 5 3
2
1 7
5
1 4 2 4 1
4
0
9

在线编程 IDE

建议全屏模式获得最佳体验