trang chủ / đề bài / borderocc

Tiền tố trùng Hậu tố

Đề bài

Mô tả

Cho xâu s gồm các chữ cái Latin in hoa, độ dài |s|.

Một xâu con của s là một đoạn liên tiếp các ký tự của s. Tiền tố độ dài l là s[1..l], hậu tố độ dài l là s[|s|−l+1..|s|].

Hãy tìm mọi độ dài l sao cho tiền tố độ dài l của s trùng với hậu tố độ dài l của s. Với mỗi l như vậy, đếm xem tiền tố độ dài l xuất hiện bao nhiêu lần dưới dạng xâu con của s (các lần xuất hiện được phép chồng lấn nhau).

Dữ liệu vào

Một dòng duy nhất chứa xâu s.

Dữ liệu ra

  • Dòng đầu chứa số nguyên k là số độ dài l thỏa mãn tiền tố độ dài l trùng hậu tố độ dài l.
  • k dòng tiếp theo, mỗi dòng chứa hai số nguyên li và ci: tiền tố độ dài li trùng với hậu tố độ dài li và xuất hiện ci lần trong s dưới dạng xâu con. In các cặp theo thứ tự li tăng dần.

Ràng buộc

  • 1≤|s|≤105
  • s chỉ gồm các chữ cái Latin in hoa từ A đến Z.

Ví dụ

Input Output Giải thích
ABACABA 3
1 4
3 2
7 1
Ba độ dài thỏa mãn là 1,3,7. Tiền tố A xuất hiện 4 lần (tại các vị trí 1,3,5,7); tiền tố ABA xuất hiện 2 lần (bắt đầu tại vị trí 1 và 5); cả xâu xuất hiện 1 lần. Độ dài 5 không được tính vì tiền tố ABACA khác hậu tố CABA.
AAA 3
1 3
2 2
3 1
Mọi độ dài 1,2,3 đều cho tiền tố trùng hậu tố. Tiền tố AA xuất hiện 2 lần tại vị trí 1 và 2, hai lần này chồng lấn nhau.
AXAXA 3
1 3
3 2
5 1
Tiền tố AXA trùng hậu tố AXA, và xuất hiện 2 lần (vị trí 1 và 3), chồng lấn tại ký tự thứ 3.

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