만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Grammarly

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

요약
길이가 최대 300,000인 문자열이 주어졌을 때, 전체 문자열에서 시작해 한 글자씩 지우며 얻는 부분 문자열의 단순 경로 개수를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

유형
문자열, 동적 계획법, 트라이
정답자
아직 제출이 없습니다

문제

CauchySheep에게 문자열 s가 있다. 그는 s의 서로 다른 비어 있지 않은 부분 문자열을 모두 살펴보고, ∣b∣+1=∣a∣|b| + 1 = |a|이고 b가 a의 부분 문자열이면 a에서 b로 향하는 간선을 추가했다. 이 그래프에서 s에서 출발하는 단순 경로의 개수를 998 244 353으로 나눈 나머지를 구하라.

입력

첫 줄에 소문자 라틴 문자로 이루어진 문자열 s가 주어진다 (1≤∣s∣≤300 0001 \le |s| \le 300\,000).

출력

s에서 출발하는 단순 경로의 개수를 998 244 353으로 나눈 나머지를 정수 하나로 출력한다.

힌트

예제4

  1. 예제 1

    입력
    abba
    
    예상 출력
    13
    
  2. 예제 2

    입력
    benbeipo
    
    예상 출력
    255
    
  3. 예제 3

    입력
    iqiiiiiiqq
    
    예상 출력
    300
    
  4. 예제 4

    입력
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    
    예상 출력
    35