CF1864C Divisor Chain

题目描述

给定一个整数 $x$,你的任务是将 $x$ 变为 $1$。 为此,你可以进行如下操作: - 选择 $x$ 的一个约数 $d$,然后将 $x$ 变为 $x-d$,即将 $x$ 减去 $d$。(我们称 $d$ 是 $x$ 的约数,如果 $d$ 是正整数,且存在整数 $q$ 使得 $x = d \cdot q$。) 有一个额外的限制:你不能选择同一个 $d$ 超过两次。 例如,对于 $x=5$,以下方案是无效的,因为 $1$ 被选择了超过两次:$5\xrightarrow{-1}4\xrightarrow{-1}3\xrightarrow{-1}2\xrightarrow{-1}1$。而以下方案是有效的:$5\xrightarrow{-1}4\xrightarrow{-2}2\xrightarrow{-1}1$。 请输出任意一种将 $x$ 变为 $1$ 的方案,且操作次数不超过 $1000$。可以证明总是存在这样的方案。

输入格式

每组测试包含多个测试用例。第一行包含测试用例数 $t$($1 \le t \le 1000$)。 接下来的每个测试用例包含一行,一个整数 $x$($2 \le x \le 10^{9}$)。

输出格式

对于每个测试用例,输出两行。 第一行包含一个整数 $k$($1 \le k \le 1001$)。 第二行包含 $k$ 个整数 $a_1,a_2,\ldots,a_k$,满足以下条件: - $a_1 = x$; - $a_k = 1$; - 对于每个 $2 \le i \le k$,$(a_{i-1} - a_i)$ 是 $a_{i-1}$ 的约数。每个数作为约数最多只能被使用两次。

说明/提示

在第一个测试用例中,我们使用如下方案:$3\xrightarrow{-1}2\xrightarrow{-1}1$。 在第二个测试用例中,我们使用如下方案:$5\xrightarrow{-1}4\xrightarrow{-2}2\xrightarrow{-1}1$。 在第三个测试用例中,我们使用如下方案:$14\xrightarrow{-2}12\xrightarrow{-6}6\xrightarrow{-3}3\xrightarrow{-1}2\xrightarrow{-1}1$。 由 ChatGPT 4.1 翻译