trang chủ / đề bài / zfunbord

Đếm biên (border) của mỗi tiền tố

Đề bài

Mô tả

Cho xâu S độ dài N chỉ gồm chữ cái thường.

Một biên (border) của xâu T độ dài k là một số nguyên L với 1≤L<k sao cho T[1…L]=T[k−L+1…k] (tiền tố độ dài L trùng với hậu tố độ dài L, hai phần này có thể chồng lấp). Biên là thực sự vì L<k.

Với mỗi k từ 1 tới N, hãy đếm số biên của tiền tố S[1…k].

Dữ liệu vào

  • Dòng duy nhất: xâu S.

Dữ liệu ra

Một dòng gồm N số nguyên cách nhau bởi dấu cách: số biên của tiền tố S[1…k] với k=1,2,…,N.

Ràng buộc

  • 1≤N≤106
  • S chỉ gồm chữ cái Latin thường (a–z).

Ví dụ

Input Output Giải thích
aabaa 0 1 0 1 2 k=2 (aa): biên {1}; k=4 (aaba): biên {1} (vì a là cả tiền tố và hậu tố); k=5 (aabaa): biên {1,2} (a và aa).
abcabcabc 0 0 0 1 1 1 2 2 2 Với k=4 (abca): biên a. Với k=7 (abcabca): biên a và abca.
aaaa 0 1 2 3 Mọi tiền tố không tầm thường của aaaa đều là biên.

Ghi chú

  • Nếu N=1 thì in ra duy nhất số 0.

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