[C10_TH_23] Biến đổi xâu

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python

Cho xâu ~S_1S_2...S_i...S_j...S_n~ ~(1 \le i \le j \le n)~ chỉ gồm các chữ cái tiếng Anh in thường.

Phép đảo ngược xâu là phép biến đổi xâu ban đầu thành một xâu mới có thứ tự các ký tự ngược lại so với xâu ban đầu. Ví dụ ten đảo ngược thành net, time đảo ngược thành emit.

Mỗi lần áp dụng phép đảo ngược xâu trên một xâu con liên tiếp từ vị trí ~i~ đến vị trí ~j~ của xâu ~S~ sẽ thu được xâu ~S' = S_1S_2...S_j...S_i...S_n~.

Yêu cầu

Tính số lượng các xâu khác nhau nằm trong tập hợp ~M~ (tập hợp các xâu khác nhau có thể tạo ra được từ phép đảo ngược xâu nói trên).

Dữ liệu đầu vào

Gồm một dòng là xâu ~S~ (độ dài không quá ~2 \times 10^5~).

Dữ liệu đầu ra

Gồm một số nguyên là kết quả của bài toán.

Ràng buộc dữ liệu

  • Có 50% test ứng với 50% số điểm thoả mãn độ dài xâu ~S~ không quá ~100~.
  • Có 50% test ứng với 50% số điểm không có ràng buộc gì thêm.

Ví dụ

Ví dụ 1
INPUT
tent
OUTPUT
6

Giải thích: Tập ~M~ gồm: tent, etnt, nett, tnet, ttne, tetn.


Bình luận

Hãy đọc nội quy trước khi bình luận.


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