Với mỗi chữ cái thường, đặt value(a)=1,value(b)=2,…,value(z)=26. Cho xâu s có độ dài n, dấu vân tay của xâu được định nghĩa bởi
H(s)=i=0∑n−1value(si)⋅31i(mod1234567891).
Chỉ số ký tự bắt đầu từ 0. Hãy tính H(s).
Input
Dòng đầu chứa số nguyên n.
Dòng thứ hai chứa xâu s gồm đúng n chữ cái thường.
Output
In giá trị H(s) sau khi lấy phần dư theo 1.234567891⋅109.
Constraints
1≤n≤50.
Mỗi ký tự của s thuộc từ a đến z.
Scoring
Subtask 1 (50% số điểm): n≤5.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
5
abcde
Output
4739715
Giải thích: Năm ký tự có giá trị lần lượt 1,2,3,4,5. Thay chúng vào công thức và lấy phần dư theo 1234567891 cho kết quả 4739715.
Lời giải tóm tắt
Phân tích: Công thức yêu cầu cộng lần lượt value(s[i]) · 31^i. Giá trị lũy thừa tăng rất nhanh, vì vậy phải rút gọn theo modulo ngay trong quá trình tính.
Thuật toán: Khởi tạo power = 1 và answer = 0. Với từng ký tự từ trái sang phải, cộng value(s[i]) * power vào đáp án, lấy modulo, rồi cập nhật power = power * 31 mod M.
Chứng minh: Sau khi xử lý i ký tự đầu, answer bằng tổng các hạng tử từ vị trí 0 đến i-1 modulo M, còn power = 31^i mod M. Bất biến đúng lúc đầu và được duy trì sau mỗi bước, nên khi xử lý hết xâu, answer đúng bằng H(s).