Pre TS10 2023 #02 - Trọng số của xâu

Xem PDF

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 abc65.


Bình luận

Không có bình luận nào.