trang chủ / bài tập / sashname

Sasha và cái tên khác

Đề bài

Mô tả

Cho một xâu sxâu đối xứng (palindrome) — đọc xuôi và đọc ngược cho ra cùng một xâu. Bạn được phép cắt s thành đúng k+1 đoạn liên tiếp (không lật ngược đoạn nào), rồi ghép các đoạn này theo một thứ tự bất kỳ để tạo thành một xâu mới s.

Hãy tìm giá trị nhỏ nhất của k sao cho có thể chọn cách cắt và cách ghép phù hợp để s vừa là một xâu đối xứng, vừa khác với xâu ban đầu s. Nếu không tồn tại k thoả mãn, in ra Impossible.

Dữ liệu vào

  • Một dòng duy nhất chứa xâu s (1|s|5000), chỉ gồm các chữ cái Latin in thường.
  • Đảm bảo s là xâu đối xứng.

Dữ liệu ra

  • In ra một số nguyên là giá trị nhỏ nhất của k, hoặc Impossible nếu không tồn tại.

Ràng buộc

  • 1|s|5000.
  • s chỉ gồm chữ cái Latin in thường và là xâu đối xứng.

Ví dụ

Input Output Giải thích
nolon 2 Cắt thành 3 đoạn: no | l | on, ghép lại theo thứ tự on | l | no thu được onlno.
otto 1 Cắt ở chính giữa thành ot | to, ghép lại thành toot.
qqqq Impossible Mọi cách ghép đều cho ra qqqq.
kinnikkinnik 1 Cắt lấy hậu tố nik rồi đem ra đầu, thu được nikkinnikkin.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0