수열과 수열 2

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

요약
모든 i에 대해 f(i)가 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≤200,000)(2 \leq N \leq 200 \\, 000)

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

출력

조건을 만족하는 함수 ff의 개수를 998,244,353998 \\, 244 \\, 353으로 나눈 나머지를 구하라.

힌트

정의역이 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을 의미한다.

예제1

  1. 예제 1

    입력
    4
    2 3 4 1
    
    예상 출력
    16