아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

기대 사이클 크기

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

요약
0을 와일드카드로 쓰는 순열 패턴이 주어질 때, 패턴에 맞는 무작위 순열에서 각 인덱스의 기대 사이클 크기를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
확률, 조합론, 수학
정답자
아직 제출이 없습니다

문제

TL;DR: 순열 패턴은 0을 와일드카드로 쓰는 순열이다. 순열 패턴 tt가 주어지면, 각 인덱스 ii에 대해 tt를 따르는 임의의 순열을 골랐을 때 인덱스 ii의 기대 사이클 크기를 구하고, 그 값을 998244353998244353으로 나눈 나머지를 출력한다.

순열은 길이가 nn인 배열 pp로서, ∀i≠j:pi≠pj\forall_{i \neq j}: p_i \neq p_j이고 ∀i:1≤pi≤n\forall_i: 1 \leq p_i \leq n을 만족한다.

길이가 같은 두 순열 pp, qq의 곱 p⋅qp \cdot q는 길이가 같은 순열 rr이며, ∀i:ri=pqi\forall_i: r_i = p_{q_i}를 만족한다.

순열 pp와 양의 정수 kk에 대한 거듭제곱 pkp^k는 다음과 같이 정의한다. k=1k = 1이면 pk=pp^k = p이고, 그 밖의 경우에는 pk=pk−1⋅pp^k = p^{k-1} \cdot p이다.

인덱스 ii의 사이클 크기는 (pk)i=i(p^k)_i = i를 만족하는 가장 작은 양의 정수 kk이다. 이러한 kk는 항상 존재함이 알려져 있다.

순열 패턴은 길이가 nn인 배열 aa로서, ∀i≠j:ai=0∨ai≠aj\forall_{i \neq j}: a_i = 0 \lor a_i \neq a_j이고 ∀i:0≤ai≤n\forall_i: 0 \leq a_i \leq n을 만족한다.

순열 pp가 패턴 tt를 따른다는 것은, 모든 ii에 대해 pi=tip_i = t_i 또는 ti=0t_i = 0이 성립한다는 뜻이다.

ansians_i는 주어진 패턴을 따르는 임의의 순열에서 인덱스 ii의 기대 사이클 크기이다. ansians_i를 998244353998244353으로 나눈 나머지를 구하라.

유리수 XX를 MM으로 나눈 나머지는 다음과 같이 정한다. 심사위원은 XX가 어떤 기약분수 PQ\frac{P}{Q}와 같고, QQ가 MM에 대한 역원을 가짐을 보장한다. 이때 XX를 MM으로 나눈 나머지는 00 이상 M−1M-1 이하의 정수 AA로서, P−QAP - QA가 MM으로 나누어떨어지는 값이다. 이러한 AA는 하나뿐이다.

입력

첫째 줄에 패턴의 길이 nn (1≤n≤1061 \leq n \leq 10^6)이 주어진다.

둘째 줄에는 공백으로 구분된 정수 tit_i (0≤ti≤n0 \leq t_i \leq n) nn개가 주어진다. 입력은 순열 패턴임이 보장된다.

출력

정수 nn개를 출력한다. ii번째 정수는 ansians_i를 998244353998244353으로 나눈 나머지이다.

힌트

두 번째 예제에서 모든 ansians_i는 32\frac{3}{2}이며, 이를 998244353998244353으로 나눈 나머지는 499122178이다.

예제3

  1. 예제 1

    입력
    5
    2 3 4 5 0
    
    예상 출력
    5 5 5 5 5
    
  2. 예제 2

    입력
    2
    0 0
    
    예상 출력
    499122178 499122178
    
  3. 예제 3

    입력
    6
    3 0 1 6 5 2
    
    예상 출력
    2 3 2 3 1 3