atcoder#ARC077D. [ARC077F] SS

[ARC077F] SS

配点 : 11001100

問題文

同じ文字列を 22 つ並べてできる文字列のことを偶文字列と呼ぶことにします。 例えば、 xyzxyzaaaaaa は偶文字列ですが、abababxyzxy は偶文字列ではありません。

空でない文字列 SS に対して、f(S)f(S) を 「SS の後ろに 11 文字以上の文字を追加してできる偶文字列のうち 最短の文字列」として定義します。 例えば、 f(f(abaaba)=)=abaababaab です。 このような文字列は空でない文字列に対してはちょうど 11 通りに定まることが証明できます。

アルファベットの小文字からなる偶文字列 SS が与えられます。 f10100(S)f^{10^{100}} (S)ll 文字目から rr 文字目までに アルファベットの小文字がそれぞれ何回出現するかを求めて下さい。

f10100(S)f^{10^{100}} (S) というのは、 f(f(f(...f(S)...)))f(f(f( ... f(S) ... ))) のように、SS1010010^{100}ff で写した文字列のことを指します。

制約

  • 2S2×1052 \leq |S| \leq 2\times 10^5
  • 1lr10181 \leq l \leq r \leq 10^{18}
  • SS は小文字のアルファベットのみからなる偶文字列である。
  • l,rl,r は整数である。

入力

入力は以下の形式で標準入力から与えられる。

SS

ll rr

出力

2626 個の整数を空白区切りで 11 行に出力せよ。 ii 番目には、 f10100(S)f^{10^{100}}(S)ll 文字目から rr 文字目までに ii 番目の アルファベットが何回出現するかを出力せよ。

abaaba
6 10
3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f(f(abaaba)=)=abaababaab なので、f10100(S)f^{10^{100}}(S) の最初の 1010 文字を取り出したものも やはり abaababaab となっています。よって、66 文字目から 1010 文字目は abaab です。 abaab には a33 回、 b22 回使われていて、 c から z までは 11 回も出てこないので、 出力するべき値は 11 番目が 33 で、 22 番目が 22 で、それ以外の 2424 個が 00 となります。

xx
1 1000000000000000000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000000000000000000 0 0
vgxgpuamkvgxgvgxgpuamkvgxg
1 1000000000000000000
87167725689669676 0 0 0 0 0 282080685775825810 0 0 0 87167725689669676 0 87167725689669676 0 0 87167725689669676 0 0 0 0 87167725689669676 141040342887912905 0 141040342887912905 0 0