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

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

접두접미사

시간 제한1초메모리 제한128 MB

요약
길이 10^5 이하의 소문자 단어가 주어질 때 모든 부분 문자열의 진 접두사-접미사 개수의 합을 구한다.
난이도

어려움10점 중 9점

유형
문자열 매칭, 문자열, 누적 합
정답자
아직 제출이 없습니다

문제

어떤 단어 ww의 접두접미사란, ww의 접두사(앞부분)이면서 동시에 접미사(뒷부분)이기도 한 단어 vv를 말합니다. ww의 진접두접미사는 비어 있지 않으면서 ww보다 짧은 접두접미사입니다. PS(w)\mathrm{PS}(w)를 단어 ww의 진접두접미사의 개수라고 하겠습니다. w[i,j]w[i, j]는 ww에서 ii번째 위치에서 시작하여 jj번째 위치에서 끝나는 부분 문자열을 나타내며, 위치는 11부터 셉니다.

단어 ww가 주어졌을 때, ww의 모든 부분 문자열에 대한 진접두접미사 개수의 총합, 즉 다음 값을 구하세요.

∑1≤i≤j≤∣w∣PS(w[i,j])\sum_{1 \le i \le j \le |w|} \mathrm{PS}(w[i, j])

입력

입력의 첫 줄이자 유일한 줄에 단어 ww가 주어집니다. ww의 길이는 1≤∣w∣≤1051 \le |w| \le 10^5이며, 영어 소문자로만 이루어져 있습니다.

출력

ww의 모든 부분 문자열에 대한 진접두접미사 개수의 총합을 정수 하나로 출력하세요.

예제4

  1. 예제 1

    입력
    ababa
    
    예상 출력
    7
    
  2. 예제 2

    입력
    aa
    
    예상 출력
    1
    
  3. 예제 3

    입력
    aaaa
    
    예상 출력
    10
    
  4. 예제 4

    입력
    abab
    
    예상 출력
    3