CF1225G To Make 1

题目描述

黑板上写有 $n$ 个正整数。同时,选定了一个正整数 $k \geq 2$,且黑板上的所有数都不被 $k$ 整除。每次操作,你可以任选两个整数 $x$ 和 $y$,将它们擦去,并写上一个新的数 $f(x + y)$,其中 $f(x)$ 的定义如下:如果 $x$ 不能被 $k$ 整除,则 $f(x) = x$;否则 $f(x) = f(x / k)$。 最终,黑板上只会剩下一个数。请判断是否有可能使最终剩下的数为 $1$。如果可以,请还原出任意一种操作序列。

输入格式

第一行包含两个整数 $n$ 和 $k$,分别表示黑板上初始的整数个数和选定的整数($2 \leq n \leq 16$,$2 \leq k \leq 2000$)。 第二行包含 $n$ 个正整数 $a_1, \ldots, a_n$,表示最初写在黑板上的数。保证所有 $a_i$ 都不被 $k$ 整除,且所有 $a_i$ 的和不超过 $2000$。

输出格式

如果无法得到 $1$ 作为最终的数,输出一行 "NO"。 否则,第一行输出 "YES",接下来输出 $n-1$ 行,每行描述一次操作。第 $i$ 行包含两个整数 $x_i$ 和 $y_i$,表示本次操作中被擦去并用 $f(x_i + y_i)$ 替换的两个数。如果有多种方案,输出任意一种均可。

说明/提示

在第二个样例中: - $f(8 + 7) = f(15) = f(5) = 5$; - $f(23 + 13) = f(36) = f(12) = f(4) = 4$; - $f(5 + 4) = f(9) = f(3) = f(1) = 1$。 由 ChatGPT 4.1 翻译