Tổng đếm xâu con

Đề bài

Mô tả

Cho xâu s chỉ gồm các chữ cái Latin thường. Với mỗi cặp (l,r) thỏa mãn 1≤l≤r≤|s|, ta gọi s[l..r] là xâu con của s bắt đầu ở vị trí l và kết thúc ở vị trí r (bao gồm hai đầu).

Với hai xâu x và y, định nghĩa hàm F(x,y) như sau: tìm danh sách tất cả các cặp (l,r) sao cho x[l..r]=y, sắp xếp danh sách theo l tăng dần. Giá trị của F(x,y) bằng số dãy con liên tiếp khác rỗng của danh sách này.

Ví dụ, với x= babbabbababbab và y= babb, danh sách các cặp là (1,4),(4,7),(9,12), có 6 dãy con liên tiếp khác rỗng nên F(x,y)=6.

Nhiệm vụ của bạn: với xâu s cho trước, hãy tính tổng F(s,x) trên tất cả các xâu x thuộc tập các xâu con của s (mỗi xâu con phân biệt được tính đúng một lần).

Dữ liệu vào

Một dòng duy nhất chứa xâu s gồm các chữ cái Latin thường.

Dữ liệu ra

In ra một số nguyên duy nhất là tổng cần tìm.

Ràng buộc

  • 1≤|s|≤105.

Ví dụ

Input Output Giải thích
aaaa 20 Các xâu con phân biệt là a, aa, aaa, aaaa với giá trị F lần lượt là 10,6,3,1; tổng bằng 20.
abcdef 21 Mỗi xâu con xuất hiện đúng một lần nên F=1 với mỗi xâu; có 21 xâu con phân biệt.
abacabadabacaba 188 Tổng giá trị F trên toàn bộ xâu con phân biệt bằng 188.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0