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