순열과 순열

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

요약
모든 i에 대해 f(i) != i이고 f(i) != A_i인 순열 f의 개수를 998244353으로 나눈 나머지로 구한다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

길이 NN의 순열 A=(A_1,,A_2,,⋯ ,,A_N)A = \left(A\_1, \\, A\_2 , \\, \cdots, \\, A\_N\right)이 주어진다. 이때, 다음을 만족하는 일대일 대응 ff의 개수를 구하라.

  • f : \left\\{1, \\, 2, \\, \cdots, \\, N \right\\} \rightarrow \left\\{1, \\, 2, \\, \cdots, \\, N \right\\}. 즉, ff는 정의역과 공역(치역)으로 집합 \left\\{1, \\, 2, \\, \cdots, \\, N \right\\}을 가진다.
  • 1≤i≤N1 \leq i \leq N을 만족하는 모든 정수 ii에 대해, f(i)≠if(i) \neq i이고 f(i)≠A_if(i) \neq A\_i이다.

이때, 답이 매우 커질 수 있으므로 998,244,353998 \\, 244 \\, 353으로 나눈 나머지를 출력하라. 998,244,353998 \\, 244 \\, 353은 소수이다.

순열 및 일대일 대응의 자세한 정의는 노트를 참고하라.

입력

첫 번째 줄에 순열의 크기를 나타내는 정수 NN이 주어진다. (2≤N≤5,0002 \leq N \leq 5 \\, 000)

두 번째 줄에 순열 AA의 원소 A_1,,A_2,,⋯ ,,A_NA\_1, \\, A\_2, \\, \cdots, \\, A\_N이 공백으로 구분되어 주어진다. (1≤A_i≤N1 \leq A\_i \leq N, i≠ji \neq j이면 A_i≠A_jA\_i \neq A\_j)

출력

조건을 만족하는 일대일 대응 ff의 개수를 998,244,353998 \\, 244 \\, 353으로 나눈 나머지를 출력하라.

힌트

길이가 NN인 순열이란 순열의 원소로 11부터 NN까지의 정수가 모두 빠짐없이 단 한 번씩 나오는 수열을 의미한다. 즉, 순열 A=(A_1,,A_2,,⋯ ,,A_N)A = \left(A\_1, \\, A\_2 , \\, \cdots, \\, A\_N\right)는 아래 조건을 만족한다.

  • A_iA\_i는 11 이상 NN 이하의 정수
  • i≠ji \neq j이면 A_i≠A_jA\_i \neq A\_j

정의역이 DD, 공역이 CC인 함수 f:D→Cf : D \rightarrow C는 집합 DD의 각 원소에 대해 집합 CC의 원소를 하나씩 대응시키는 규칙이다. 이때 모든 대응값은 CC에 속하며, 함수는 DD의 모든 원소에 대해 정의되어야 한다. 즉, 모든 x∈Dx \in D에 대해 유일한 f(x)∈Cf(x) \in C가 존재하는 대응 규칙을 의미한다. 함수 f:D→Cf: D \rightarrow C의 치역은 정의역 DD의 원소들이 ff에 의해 실제로 대응되는 공역 CC의 원소들의 집합이다. 즉, ff의 치역은 f(x)∣x∈D⊆C\\{ f(x) \mid x \in D \\} \subseteq C을 의미한다.

함수 f:D→Cf: D \rightarrow C가 일대일 함수(단사 함수)가 되기 위해서는, 임의의 x_1,,x_2∈Dx\_1, \\, x\_2 \in D에 대하여

f(x_1)=f(x_2)  ⟹  x_1=x_2f(x\_1) = f(x\_2) \implies x\_1 = x\_2

가 성립해야한다. 즉, 서로 다른 원소는 항상 서로 다른 함수값에 대응되는 함수를 의미한다.

함수 f:D→Cf: D \rightarrow C가 일대일 대응(전단사 함수)가 되기 위해서는, 함수 ff가 일대일 함수이며 공역과 치역이 같아야 한다. 즉,

∀y∈C,∃!x∈D,s.t.f(x)=y\forall y \in C, \exists! x \in D \\, \text{s.t.} f(x) = y

이면 ff를 일대일 대응이라고 한다.

예제3

  1. 예제 1

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

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

    입력
    25
    11 13 9 22 19 4 3 12 16 7 21 8 14 2 1 24 23 18 17 20 10 25 5 6 15
    
    예상 출력
    829913928