Nộp bài
Điểm:
1500 (thành phần)
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
STRW.inp
Output:
STRW.out
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, NASM, Pascal, pypy3, Python, text
Trọng số của một xâu s chỉ gồm các chữ cái trong bảng chữ cái tiếng Anh được tính bằng tổng các giá trị i^2 \times v_{s_i} với 1 \le i \le |s|, trong đó |s| là độ dài xâu s, s_i là ký tự thứ i của xâu s, v_{s_i} là vị trí của ký tự s_i trong bảng chữ cái.
Ví dụ, trọng số của xâu s = abca
sẽ được tính như sau:
- Với i = 1, ta có 1^2 \times v_{s_1} = 1^2 \times 1 = 1.
- Với i = 2, ta có 2^2 \times v_{s_2} = 2^2 \times 2 = 8.
- Với i = 3, ta có 3^2 \times v_{s_3} = 3^2 \times 3 = 27.
- Với i = 4, ta có 4^2 \times v_{s_4} = 4^2 \times 1 = 16.
- Vậy trọng số của xâu s bằng 1 + 8 + 27 + 16 = 52.
Một xâu con liên tiếp của xâu t là xâu t khi xóa đi một số ký tự đầu và cuối (có thể không xóa ký tự nào), và giữ nguyên thứ tự của các ký tự còn lại. Ví dụ ab
, bdc
, abdc
hay b
là xâu con liên tiếp của abdc
nhưng acd
hay abc
thì không.
Tính tổng trọng số của tất cả các xâu con liên tiếp của xâu t.
Input, Output và Subtasks
Input: (STRW.inp
)
- Một dòng duy nhất gồm xâu t có độ dài không quá 2 \times 10^5.
Output: (STRW.out
)
- Một dòng duy nhất là trọng số của xâu t. Vì kết quả có thể rất lớn nên bạn chỉ cần in ra trọng số sau khi đã chia lấy dư cho 10^9 + 7.
Subtasks
- Subtask 1 (30\%): Độ dài xâu t không vượt quá 200.
- Subtask 2 (35\%): Độ dài xâu t không vượt quá 2000.
- Subtask 3 (35\%): Độ dài xâu t không vượt quá 2 \times 10^5.
Sample
Input (STRW.inp
)
abc
Output (STRW.out
)
65
Note
- Các xâu
a
,b
,c
có trọng số lần lượt là 1, 2, 3. - Các xâu
ab
,bc
có trọng số lần lượt là 9, 14. - Xâu
abc
có trọng số là 36.
Vậy tổng trọng số của các xâu con của xâu abc
là 65.
Bình luận