만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

행진 순서

시간 제한1초메모리 제한2048 MB

요약
n명의 교수와 제안된 행진 순서가 주어질 때, 그 순서를 만드는 가장 작은 m을 찾고 없으면 NO를 출력하는 문제입니다.
난이도

보통10점 중 6점

유형
정수론, 백트래킹, 시뮬레이션
정답자
아직 제출이 없습니다

문제

학장 밥 로버츠는 대학 졸업식에서 교수들이 행진하는 순서를 정한다. 새로 만들어진 DEI 연구학과 교수들이 연공서열에 따른 순서에 불만을 제기하자, 학장은 행진 순서를 무작위로 정하기로 했다. 밥은 이 방식이 괜찮다고 본다. 투명성을 위해 그는 행진 목록을 만드는 방법을 공개했다.

그는 알파벳 순으로 정렬된 nn명의 교수 목록과 음이 아닌 정수 m<109m < 10^{9}로 시작한다. 교수들에게는 0,1,…,n−10, 1, \ldots, n-1의 번호가 붙어 있다. 행진 목록의 첫 번째 사람은 알파벳 목록에서 위치 m mod nm \bmod n에 있는 사람이다. 그 사람이 목록에서 빠지면 목록 길이가 하나 줄고, 위치가 m mod nm \bmod n보다 큰 사람들은 한 칸씩 앞으로 당겨진다. 두 번째 사람은 위치 m mod (n−1)m \bmod (n-1)에 있는 사람이며, 이후도 같은 방식으로 정한다.

예를 들어 교수가 A, B, C, D, E, F 여섯 명이고 m=11679m = 11679라고 하자. 행진 목록은 다음과 같이 만들어진다.

nnm mod nm \bmod n알파벳 목록행진 목록
63A B C D E FD
54A B C E FD F
43A B C ED F E
30A B CD F E A
21B CD F E A C
10BD F E A C B

이 방법은 공정해 보이지만 검증하기는 어렵다. 로버츠 학장이 사용하는 mm 값을 공개하지 않기 때문에, 교수들은 학장이 밝힌 방법을 실제로 따르는지, 아니면 개인 선호로 순서를 골랐는지 알 수 없다. 교수들이 알고 싶은 것은 주어진 행진 순서를 만들어 낼 수 있는 mm 값이 있는지 여부이다.

입력

첫째 줄에 행진할 교수의 수를 나타내는 10진수 정수 nn (5≤n≤205 \leq n \leq 20)이 주어진다. 둘째 줄에는 제안된 행진 순서를 나타내는 문자열이 주어진다. 이 문자열은 알파벳 대문자 처음 nn개를 순서만 바꾼 것이다.

출력

주어진 행진 순서가 이 알고리즘으로 만들어질 수 없다면 NO라는 한 줄을 출력한다. 만들어질 수 있다면 두 줄을 출력한다. 첫째 줄에는 YES를, 둘째 줄에는 주어진 행진 순서를 만들어 내는 가장 작은 음이 아닌 정수 mm을 출력한다.

예제2

  1. 예제 1

    입력
    6
    DFEACB
    
    예상 출력
    YES
    39
    
  2. 예제 2

    입력
    7
    DFEGACB
    
    예상 출력
    NO