CF1656H Equal LCM Subsets

题目描述

给定两个正整数集合 $A$ 和 $B$。你需要找到两个非空子集 $S_A \subseteq A$,$S_B \subseteq B$,使得 $S_A$ 中所有元素的最小公倍数(LCM)等于 $S_B$ 中所有元素的最小公倍数(LCM)。

输入格式

输入包含多组测试数据。第一行包含一个整数 $t$($1 \leq t \leq 200$),表示测试数据组数。 对于每组测试数据,第一行包含两个整数 $n, m$($1 \leq n, m \leq 1000$),分别表示集合 $A$ 和 $B$ 的大小。 接下来一行包含 $n$ 个互不相同的整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 4 \cdot 10^{36}$),表示集合 $A$ 的元素。 再接下来一行包含 $m$ 个互不相同的整数 $b_1, b_2, \ldots, b_m$($1 \leq b_i \leq 4 \cdot 10^{36}$),表示集合 $B$ 的元素。 所有测试数据中 $n$ 的总和与 $m$ 的总和不超过 $1000$。

输出格式

对于每组测试数据,如果不存在两个子集使得它们的最小公倍数相等,则输出一行 NO。 否则,输出一行 YES,接着一行两个整数 $|S_A|, |S_B|$($1 \leq |S_A| \leq n$,$1 \leq |S_B| \leq m$),表示子集 $S_A$ 和 $S_B$ 的大小。 下一行输出 $|S_A|$ 个整数 $x_1, x_2, \ldots, x_{|S_A|}$,表示 $S_A$ 的元素,接下来一行输出 $|S_B|$ 个整数 $y_1, y_2, \ldots, y_{|S_B|}$,表示 $S_B$ 的元素。如果存在多组解,输出任意一组均可。

说明/提示

由 ChatGPT 4.1 翻译