CF665D Simple Subset
题目描述
如果一个整数元组 $ {x_{1}, x_{2}, ..., x_{k}} $ 满足对于所有满足 $ 1 \leq i < j \leq k $ 的正整数对 $(i, j)$,都有 $ x_{i} + x_{j} $ 是质数,那么我们称其为“简单元组”。
给定一个包含 $ n $ 个正整数的数组 $ a $:$ a_{1}, a_{2}, ..., a_{n} $(其中的数不一定互不相同)。你需要从数组 $ a $ 中选出一个元素的子集,组成一个简单元组,并且要求该简单元组的元素个数最大。
质数是指大于 $1$ 并且除了 $1$ 和它本身以外没有其它约数的自然数。
数组 $ a $ 的一个子集就是从 $ a $ 中删除若干(也可能全部)元素后得到的任何一个元组。
输入格式
第一行包含一个整数 $ n $($ 1 \leq n \leq 1000 $),表示数组 $ a $ 的元素个数。
第二行包含 $ n $ 个整数 $ a_{i} $($ 1 \leq a_{i} \leq 10^{6} $),表示数组 $ a $ 的各个元素。
输出格式
第一行输出一个整数 $ m $,表示数组 $ a $ 的最大简单子集的大小。
第二行输出 $ m $ 个整数 $ b_{l} $,表示这个最大简单子集的全部元素。
如果存在多组解,你可以输出任意一组。子集内元素的顺序也没有要求。
说明/提示
由 ChatGPT 5 翻译