CF2107A.LRC and VIP
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给你一个长为 n 的数组 a=(a1,a2,⋯,an)。
你需要把它分成两个子序列 B 和 C,使得:
- a 中的每个元素都属于两个子序列中的一个。
- 两个子序列都至少包含一个元素。
- 两个子序列的最大公因数不相等。
请判断是否有解,如果有解,请给出方案。
输入格式
多组数据,第一行一个整数,为数据组数 t(1≤t≤500)。
对于每组数据:第一行一个整数,表示 n(2≤n≤100)。
第二行 n 个整数 a1,a2,⋯an(1≤ai≤104)。
输出格式
对于每组数据,如果有解,第一行输出 Yes,否则第一行输出 No。大小写不敏感。
如果有解,你需要输出第二行表示一种方案,为空格隔开的 n 个数字,第 i 个数字为 1 表示 ai 被划分到 B 中,为 2 则表示 ai 被划分到 C 中。你需要保证 1 和 2 都至少出现一次。
如果有多种合法方案,输出任意一种均可。
输入输出样例
输入#1
3 4 1 20 51 9 4 5 5 5 5 3 1 2 2
输出#1
Yes 2 2 1 1 No Yes 1 2 2
说明/提示
第一组数据的输出中,B=(51,9),C=(1,20)。gcd(B1,B2)=3=1=gcd(C1,C2)。
对于第二组数据,没有合法的方案。存在方案 B=(5,5,5),C=(5),但是 gcd(B1,B2,B3)=5=gcd(C1),所以此方案非法。
By chenxi2009
输入解题思路,AI测评打分。不知道怎么写?