만드는 중입니다

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

잘못 구현된 알고리즘

시간 제한2초메모리 제한512 MB

요약
길이 n인 순열 중 주어진 회전 알고리즘이 1로 시작하는 순환 이동을 잘못 찾는 순열의 개수를 구합니다.
난이도

보통10점 중 6점

유형
조합론, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

다음 문제를 생각해 보자.

  • 11부터 nn까지의 정수가 각각 정확히 한 번씩 나타나는 순열 A=⟨a1,a2,…,an⟩A = \langle a_1, a_2, \ldots, a_n \rangle이 주어진다. 이 순열의 순환 이동 중 11로 시작하는 것은 하나뿐이며, 그 순환 이동을 구하라.

이 문제를 다음 알고리즘으로 풀려고 한다.

  • 입력: A=⟨a1,a2,…,an⟩A = \langle a_1, a_2, \ldots, a_n \rangle
  • i=2,3,…,ni = 2, 3, \ldots, n에 대해 다음을 반복한다.
    • ai<a1a_i < a_1이면, AA를 회전시켜 aia_i를 맨 앞으로 옮긴다. 즉 A←⟨ai,ai+1,…,an,a1,a2,…,ai−1⟩A \leftarrow \langle a_i, a_{i+1}, \ldots, a_n, a_1, a_2, \ldots, a_{i-1} \rangle로 둔다.
  • 출력: A=⟨a1,a2,…,an⟩A = \langle a_1, a_2, \ldots, a_n \rangle

이 알고리즘이 잘못 동작하는 순열의 개수를 구하라.

입력

한 줄에 정수 nn (1≤n≤421 \le n \le 42)이 주어진다.

출력

알고리즘이 잘못 동작하는 순열의 개수를 출력한다.

힌트

n=3n = 3인 경우, 알고리즘이 틀리게 답하는 순열은 ⟨3,2,1⟩\langle 3, 2, 1 \rangle뿐이다. 알고리즘은 ⟨2,1,3⟩\langle 2, 1, 3 \rangle을 출력하지만, 올바른 답은 ⟨1,3,2⟩\langle 1, 3, 2 \rangle이다.

예제2

  1. 예제 1

    입력
    3
    
    예상 출력
    1
    
  2. 예제 2

    입력
    7
    
    예상 출력
    1023