CF1401C Mere Array

题目描述

给定一个数组 $a_1, a_2, \dots, a_n$,其中所有 $a_i$ 都是大于 $0$ 的整数。 每次操作,你可以选择两个不同的下标 $i$ 和 $j$($1 \le i, j \le n$)。如果 $gcd(a_i, a_j)$ 等于整个数组 $a$ 的最小值,你可以交换 $a_i$ 和 $a_j$。其中 $gcd(x, y)$ 表示整数 $x$ 和 $y$ 的最大公约数。 现在你希望通过任意次数(可以为零)上述操作,使数组 $a$ 变为非递减。请判断是否可以做到。 当且仅当 $a_1 \le a_2 \le \ldots \le a_n$ 时,数组 $a$ 是非递减的。

输入格式

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

输出格式

对于每个测试用例,如果可以通过上述操作使数组 $a$ 变为非递减,输出 "YES";否则输出 "NO"。

说明/提示

在第一个和第三个样例中,数组已经是非递减的。 在第二个样例中,我们可以先交换 $a_1$ 和 $a_3$,再交换 $a_1$ 和 $a_5$,使数组变为非递减。 在第四个样例中,无法通过操作使数组变为非递减。 由 ChatGPT 4.1 翻译