#P17361. [ECNA 2024] Marching Orders

    ID: 19779 远端评测题 1000ms 2048MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>数学2024数论最大公约数 gcd扩展欧几里德算法不定方程中国剩余定理 CRTICPC

[ECNA 2024] Marching Orders

题目描述

院长 Bob Roberts 负责确定学院教授在毕业典礼上的行进次序。新成立的 DEI Studies Department 中有些教授提出意见,于是学院决定不再按资历排列,而应随机决定次序。Bob 认为这样很好,并为了完全公开透明,公布了生成行进名单的方法:

他从一份按字母顺序排列的 nn 名教授名单开始,位置编号为 0,1,,n10,1,\ldots,n-1,并选取一个小于 10910^9 的非负整数 mm。行进名单中的第一人,是字母顺序名单中位置为 mmodnm\bmod n 的教授。移除此人后,名单长度减一,原先位置大于 mmodnm\bmod n 的人都向前移动。行进名单中的第二人,是新名单中位置为 mmod(n1)m\bmod(n-1) 的教授,依此类推。

例如,有六名教授 A、B、C、D、E、F,且 m=11679m=11679 时,生成过程如下:

当前人数 mm 对当前人数取模 字母顺序名单 行进名单
66 33 A B C D E F D
55 44 A B C E F D F
44 33 A B C E D F E
33 00 A B C D F E A
22 11 B C D F E A C
11 00 B D F E A C B

这听起来很公平,但某些教授认为还不够透明,因为 Roberts 院长并不公开实际使用的 mm。这样一来,就很难判断他是否真的遵循了公布的方法,还是仅凭个人喜好和偏见选择行进次序。

教职员工想知道:对于给定的行进次序,是否存在某个 mm 能够生成它?

输入格式

第一行包含一个十进制整数 nn5n205\le n\le 20),表示参加行进的教授人数。

第二行包含一个字符串,是英文字母表前 nn 个大写字母的一个排列,表示拟定的行进次序。

输出格式

如果给定次序不可能由上述算法生成,输出一行 NO

否则输出两行:第一行输出 YES,第二行输出能够生成该次序的最小非负整数 mm

6
DFEACB
YES
39
7
DFEGACB
NO