CF1521B Nastia and a Good Array

题目描述

Nastia 收到了一份包含 $n$ 个正整数的数组作为礼物。 她称一个数组 $a$ 是“好”的,当且仅当对于所有 $i$($2 \le i \le n$),都有 $gcd(a_{i-1}, a_i) = 1$,其中 $gcd(u, v)$ 表示整数 $u$ 和 $v$ 的最大公约数。 你可以进行如下操作:选择两个不同的下标 $i, j$($1 \le i, j \le n$,$i \neq j$)以及两个整数 $x, y$($1 \le x, y \le 2 \cdot 10^9$),使得 $\min(a_i, a_j) = \min(x, y)$。然后将 $a_i$ 变为 $x$,$a_j$ 变为 $y$。 Nastia 希望你用不超过 $n$ 次操作将数组变为“好”的。 可以证明总是存在解。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10\,000$),表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^5$),表示数组的长度。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$),表示 Nastia 收到的数组。 保证单个测试用例中所有 $n$ 的和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数 $k$($0 \le k \le n$),表示操作次数。你不需要使这个数最小。 接下来的 $k$ 行,每行输出 $4$ 个整数 $i, j, x, y$($1 \le i \neq j \le n$,$1 \le x, y \le 2 \cdot 10^9$),表示你将 $a_i$ 变为 $x$,$a_j$ 变为 $y$,并且满足 $\min(a_i, a_j) = \min(x, y)$。 如果有多组答案,输出任意一组均可。

说明/提示

考虑第一个测试用例。 初始时 $a = [9, 6, 3, 11, 15]$。 第一次操作,将 $a_1$ 变为 $11$,$a_5$ 变为 $9$。这是合法的,因为 $\min(a_1, a_5) = \min(11, 9) = 9$。 此时 $a = [11, 6, 3, 11, 9]$。 第二次操作,将 $a_2$ 变为 $7$,$a_5$ 变为 $6$。这是合法的,因为 $\min(a_2, a_5) = \min(7, 6) = 6$。 此时 $a = [11, 7, 3, 11, 6]$,这是一个“好”的数组。 第二个测试用例中,初始数组已经是“好”的。 由 ChatGPT 4.1 翻译