P15913 [TOPC 2024] In Search of the Lost Array

题目描述

在一个被遗忘的国度中,一群冒险者偶然发现了藏于古老图书馆深处的神秘卷轴。这些卷轴中隐藏着一个强大的数值数组的秘密,这个数组控制着整个国度的魔法。然而,卷轴在岁月中已经损坏,只剩下一些碎片。具体来说,冒险者们发现了一个数字序列,它代表了某个未知数组 $A$ 中相邻元素乘积的集合。 原始数组 $A$ 由 $n$ 个整数 $a_1, a_2, \dots, a_n$ 组成,其中 $1 \le a_i \le 100$($1 \le i \le n$)。卷轴上保留的唯一信息是一个由 $n-1$ 个整数 $b_1, b_2, \dots, b_{n-1}$ 组成的序列,这些数是 $A$ 中相邻元素乘积的 **无序** 集合。换句话说: $$ \{b_1, b_2, \dots, b_{n-1}\} = \{a_1 \times a_2, a_2 \times a_3, \dots, a_{n-1} \times a_n\} $$ 你的任务是帮助冒险者重构出一个可能的原始数组 $A$。如果存在多个有效的数组 $A$ 能产生相同的序列 $b$,你可以输出其中任意一个。

输入格式

第一行包含一个整数 $n$,表示数组 $A$ 的长度。第二行包含 $n-1$ 个空格分隔的整数 $b_1, b_2, \dots, b_{n-1}$,表示数组 $A$ 中相邻元素乘积的集合。

输出格式

如果不存在这样的数组 $A$,则输出一行 **No**。否则,第一行输出 **Yes**,第二行输出 $n$ 个空格分隔的整数 $a_1, a_2, \dots, a_n$,使得 $\{b_1, b_2, \dots, b_{n-1}\} = \{a_1 \times a_2, a_2 \times a_3, \dots, a_{n-1} \times a_n\}$。

说明/提示

- $1 < n \le 18$ - $1 \le a_i \le 100$,对于 $i \in \{1, 2, \dots, n\}$ - $1 \le b_i \le 10000$,对于 $i \in \{1, 2, \dots, n - 1\}$ 翻译由 DeepSeek V3.2 完成