시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 1024 MB | 10 | 5 | 4 | 50.000% |
두 문자열 $S$와 $P$에 대해, $S$에서 $P$가 등장하는 횟수를 나타내는 함수 $f(S, P)$가 있다. 즉 $f(S, P)$는 $P$가 $S$에서 연속한 부분 문자열로 등장하는 횟수를 나타낸다. 예를 들어 $f($"ababa
"$,$"aba
"$) = 2$이고, $f($"aaaaa
"$,$"aa
"$) = 4$이다.
여기에 더해서, 어떤 문자열 $S$에 대해서 가능한 모든 문자열의 등장횟수 제곱의 합을 나타내는 함수 $g(S)$가 있다. 즉, $g(S)$는 가능한 모든 문자열 $P$에 대해서 $[f(S,P)]^2$의 합을 구한 값이다.
$N$개의 문자로 이루어진 문자열 $S = c_1c_2 \cdots c_N$이 주어진다. $R_i = g(c_1c_2 \cdots c_i)$ ($S$의 처음 $i$자리에 대한 등장횟수 제곱의 합)이라고 하면, $R$값의 변화치를 통해 문자열의 뒤쪽에 한 글자가 추가될 때 마다 새롭게 찾을 수 있는 부분문자열이 얼마나 많아지는지 짐작해볼 수 있다. 이를 위해 $R_1$에서 $R_N$까지를 모두 구하는 프로그램을 작성하라.
첫 번째 줄에 길이가 $1$이상 $10^5$이하인 문자열 $S$가 주어진다. $S$는 알파벳 소문자 만으로 구성된다.
$N$개의 줄에 걸쳐 정답을 출력한다. $i$번째 줄에는 $R_i$만이 출력되어야 한다.
aaa
1 5 14
pqpq
1 3 8 16
stssts
1 3 8 16 25 41
Camp > Petrozavodsk Programming Camp > Winter 2018 > Day 5: Grand Prix of Korea I번
Contest > kriiicon > 제5회 kriiicon NO번
Contest > Open Cup > 2017/2018 Season > Stage 10: Grand Prix of Korea I번