CF2227C Snowfall

题目描述

Yousef 给了你一个长度为 $n$ 的正整数数组 $a$。 定义 $f(a)$ 表示 $a$ 的所有子数组中,元素乘积能被 $6$ 整除的子数组的数量。 更具体地说,对于每对下标 $l$ 和 $r$,满足 $1 \le l \le r \le n$,考虑子数组 $a_l, a_{l+1}, \dots, a_r$。如果该子数组的元素乘积能被 $6$ 整除,则计入 $f(a)$。 例如,若 $a = [1, 6, 2]$,则乘积能被 $6$ 整除的子数组为 $[6]$、$[1, 6]$、$[6, 2]$ 以及 $[1, 6, 2]$,因此 $f(a) = 4$。 你的任务是重新排列数组 $a$ 的元素,使得 $f(a)$ 最小。如果有多种方式满足条件,你可以输出任意一种。 注意:$^\ast$ 当数组 $b$ 可以通过从数组 $a$ 的开头和末尾各删除零个或若干个元素得到时,$b$ 被称为 $a$ 的子数组。

输入格式

输入第一行为一个整数 $t$($1 \le t \le 10^4$)——表示测试用例的数量。 每个测试用例的第一行为一个整数 $n$($1 \le n \le 2 \cdot 10^5$)——数组的长度。 接下来一行输入 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$)——数组的元素。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每组测试数据,输出重新排列后的数组 $a$,使 $f(a)$ 最小。如果有多种答案,可以输出任意一种。

说明/提示

在第一个测试用例中,一种最优的排列是 $a = [12, 18, 4, 7, 5, 9]$。其中乘积能被 $6$ 整除的子数组为: - $[12]$ - $[18]$ - $[12, 18]$ - $[18, 4]$ - $[12, 18, 4]$ - $[18, 4, 7]$ - $[12, 18, 4, 7]$ - $[18, 4, 7, 5]$ - $[4, 7, 5, 9]$ - $[12, 18, 4, 7, 5]$ - $[18, 4, 7, 5, 9]$ - $[12, 18, 4, 7, 5, 9]$ 因此 $f(a) = 12$。可以证明不存在更优的排列使得 $f(a)$ 更小。 由 ChatGPT 5 翻译