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 翻译