순열과 순열 (Hard)
시간 제한2초메모리 제한1024 MB
모든 i에 대해 f(i)가 i도 A_i도 아닌 순열 f의 개수를 998244353으로 나눈 나머지로 구한다. N은 200000까지이다.
문제
이 문제는 순열과 순열과 의 제한만 다릅니다.
길이 의 순열 이 주어진다. 이때, 다음을 만족하는 일대일 대응 의 개수를 구하라.
- f : \left\\{1, \\, 2, \\, \cdots, \\, N \right\\} \rightarrow \left\\{1, \\, 2, \\, \cdots, \\, N \right\\}. 즉, 는 정의역과 공역(치역)으로 집합 \left\\{1, \\, 2, \\, \cdots, \\, N \right\\}을 가진다.
- 을 만족하는 모든 정수 에 대해, 이고 이다.
이때, 답이 매우 커질 수 있으므로 으로 나눈 나머지를 출력하라. 은 소수이다.
순열 및 일대일 대응의 자세한 정의는 노트를 참고하라.
입력
첫 번째 줄에 순열의 크기를 나타내는 정수 이 주어진다. ()
두 번째 줄에 순열 의 원소 이 공백으로 구분되어 주어진다. (, 이면 )
출력
조건을 만족하는 일대일 대응 의 개수를 으로 나눈 나머지를 출력하라.
힌트
길이가 인 순열이란 순열의 원소로 부터 까지의 정수가 모두 빠짐없이 단 한 번씩 나오는 수열을 의미한다. 즉, 순열 는 아래 조건을 만족한다.
- 는 이상 이하의 정수
- 이면
정의역이 , 공역이 인 함수 는 집합 의 각 원소에 대해 집합 의 원소를 하나씩 대응시키는 규칙이다. 이때 모든 대응값은 에 속하며, 함수는 의 모든 원소에 대해 정의되어야 한다. 즉, 모든 에 대해 유일한 가 존재하는 대응 규칙을 의미한다. 함수 의 치역은 정의역 의 원소들이 에 의해 실제로 대응되는 공역 의 원소들의 집합이다. 즉, 의 치역은 을 의미한다.
함수 가 일대일 함수(단사 함수)가 되기 위해서는, 임의의 에 대하여
가 성립해야한다. 즉, 서로 다른 원소는 항상 서로 다른 함수값에 대응되는 함수를 의미한다.
함수 가 일대일 대응(전단사 함수)가 되기 위해서는, 함수 가 일대일 함수이며 공역과 치역이 같아야 한다. 즉,
이면 를 일대일 대응이라고 한다.