#3592. 素数排列

素数排列

题目描述

给定一个由小写拉丁字母组成的字符串 ss。记字符串长度为 ∣s∣|s|,字符串中的字符从 11 开始编号。

你的任务是判断:能否重排字符串 ss 中的字符,使得对任意素数 p≤∣s∣p \le |s| 以及任意从 11 到 ∣s∣/p|s|/p(含两端)的整数 ii,都满足 sp=sp×is_p = s_{p \times i}。如果可行,给出一种重排后的字符串。

输入格式

唯一一行包含初始字符串 ss,由小写拉丁字母组成(1≤∣s∣≤10001 \le |s| \le 1000)。

输出格式

如果可以重排字符使上述条件满足,第一行输出 YES(不含引号),并在第二行输出任意一种可行的结果字符串;如果不存在这样的排列,只输出一行 NO。

abc
YES
abc
abcd
NO
xxxyxxx
YES
xxxxxxy

说明/提示

第一组样例中,六种可能的字符串都满足条件:"abc"、"acb"、"bac"、"bca"、"cab"、"cba"。

第二组样例中,任何字母排列都无法满足 p=2p=2 处的条件(s2=s4s_2 = s_4)。

第三组样例中,只要字符 "y" 不落在位置 2、3、4、6 上,字符串就合法。