配点 : 500 点
問題文
2 つの文字列 X,Y に対して、その類似度 f(X,Y) を、X と Y を先頭から見て一致している文字数とします。
例えば abc
と axbc
の類似度は 1 、aaa
と aaaa
の類似度は 3 です。
長さ N の文字列 S が与えられます。S の i 文字目以降からなる文字列を Si とします。k=1,…,N のそれぞれについて、f(Sk,S1)+f(Sk,S2)+…+f(Sk,SN) を求めてください。
制約
- 1≤N≤106
- S は英小文字のみからなる長さ N の文字列
入力
入力は以下の形式で標準入力から与えられる。
N
S
出力
N 行出力せよ。
i 行目には k=i の問題の答えを出力せよ。
3
abb
3
3
2
S1,S2,S3 はそれぞれ abb
, bb
, b
です。
- k=1 のとき f(S1,S1)+f(S1,S2)+f(S1,S3)=3+0+0=3
- k=2 のとき f(S2,S1)+f(S2,S2)+f(S2,S3)=0+2+1=3
- k=3 のとき f(S3,S1)+f(S3,S2)+f(S3,S3)=0+1+1=2
11
mississippi
11
16
14
12
13
11
9
7
4
3
4