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

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

최소 순환 시프트

시간 제한1.5초메모리 제한256 MB

요약
길이가 주어진 무작위 소문자 문자열들에 대해, 답안 순서가 한 칸 밀려 적힌 경우 맞은 개수의 기댓값을 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

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

문제

Ani는 젊고 무모한 학생이다. 어느 날 그는 아주 이상한 수학 숙제를 받았다.

숙제에는 길이가 각각 a1,a2,…,ana_1, a_2, \ldots, a_n인 문자열 s1,s2,…,sns_1, s_2, \ldots, s_n이 nn개 주어졌다.

f(s)f(s)는 문자열 ss의 사전순으로 가장 작은 순환 시프트가 시작하는 위치이다. 그런 위치가 하나가 아닐 수 있으므로, f(s)f(s)는 그중 가장 작은 위치로 정의한다. 예를 들어 qweqweqwe에서 사전순으로 가장 작은 순환 시프트는 eqweqweqw이고, 이것이 원래 문자열에서 시작하는 가장 작은 위치는 3번이다. 그 자리에 있는 문자가 e이기 때문이다. 따라서 f(qweqweqwe)=3f(\text{qweqweqwe}) = 3이다.

숙제는 f(s1),f(s2),…,f(sn)f(s_1), f(s_2), \ldots, f(s_n)을 이 순서대로 적는 것이었다. 그런데 Ani는 f(sn),f(s1),f(s2),…,f(sn−1)f(s_n), f(s_1), f(s_2), \ldots, f(s_{n-1}) 순서로 답을 적었다. 그는 답을 제출하고 나서야 이를 알아챘다. 지금 그가 기억하는 것은 a1,a2,…,ana_1, a_2, \ldots, a_n뿐이다. 문자열은 소문자 영어 알파벳으로만 이루어지며, 선생님이 균등한 확률로 무작위 생성했다고 가정한다. Ani가 맞힌 답의 개수의 기댓값을 998244353으로 나눈 나머지로 구하라.

기댓값은 서로소인 음이 아닌 정수 p,qp, q에 대해 p/qp / q 꼴로 나타낼 수 있다. p⋅q−1 mod 998244353p \cdot q^{-1} \bmod 998244353을 출력한다.

입력

첫 줄에 문자열의 개수 nn (1≤n≤1051 \le n \le 10^5)이 주어진다.

둘째 줄에는 공백으로 구분된 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤1051 \le a_i \le 10^5)이 주어진다. 각 문자열의 길이이다.

출력

맞힌 답의 개수 기댓값을 998244353으로 나눈 나머지를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    1
    100000
    
    예상 출력
    1