시간 제한메모리 제한제출정답맞힌 사람정답 비율
12 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)70191021.739%

문제

$N$명의 BOJ 대학교 학생들을 조들로 나눠, 각자 조별 과제를 하게 하려고 한다. 그런데, 어떤 학생들은 싫어하는 학생이 한 명 존재해 그 학생과는 조원을 하지 않으려고 한다. $i$번 학생이 싫어하는 학생은 $A_i$번 학생이다. 단, $A_i=i$인 경우는 싫어하는 학생이 존재하지 않는 경우이다.

$1$부터 $N$까지의 각 $M$에 대해, 여러분은 모든 학생이 싫어하는 학생과는 같은 조가 되지 않도록 학생들을 비지 않은 $M$개의 조로 나누는 경우의 수를 구해야 한다. 조로 나누는 두 방법이 다르다는 것은 한 방법에서만 같은 조에 속하는 학생 쌍이 존재함을 의미한다.

입력

첫 번째 줄에 $N$이 주어진다.

두 번째 줄에 $A_1,\dots ,A_N$이 공백으로 구분되어 주어진다.

출력

$M=1$부터 $N$까지 순서대로 학생들을 $M$개의 조로 나누는 경우의 수를 소수 $998244353$로 나눈 나머지를 공백으로 구분하여 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • $1\le N\le 500\, 000$
  • $1\le A_i\le N$ $(1\le i\le N)$

예제 입력 1

10
1 2 3 4 5 6 7 8 9 10

예제 출력 1

1 511 9330 34105 42525 22827 5880 750 45 1

모든 학생이 싫어하는 학생이 없다. 이 경우 $N$명의 학생을 $M$개의 조로 나누는 경우의 수는 제2종 스털링 수 $S(N, M)$이다.

예제 입력 2

10
2 1 4 3 6 7 5 1 3 5

예제 출력 2

0 0 288 3600 9056 7846 2890 489 37 1

5, 6, 7번 학생이 각각 다른 조에 속해야 하므로 2개 이하의 조로는 학생들을 나눌 수 없다.

예제 입력 3

10
3 1 4 1 5 9 2 6 5 3

예제 출력 3

0 0 192 2724 7420 6811 2625 461 36 1

출처

Contest > BOJ User Contest > Good Bye, BOJ > Hello, BOJ 2025! G번